VOID 0

2018-06-07  本文已影响0人  787518d9b65a

void 0

void 关键字,该void 运算符能对给定的表达式进行求值,然后返回 undefined。

void()仅仅是代表不返回任何值,但是括号内的表达式还是要运行,例如下面代码

void(console.log("Wornning!"))

在使用立即执行的函数表达式时,可以利用 void 运算符让 JavaScript 引擎把一个function关键字识别成函数表达式而不是函数声明(语句)。

void function iife() {
    var bar = function () {};
    var baz = function () {};
    var foo = function () {
        bar();
        baz();
     };
    var biz = function () {};

    foo();
    biz();
}();

JavaScript URIs中,用户在点击一个以 javascript: URI 时,它会评估URI中的代码,然后用返回的值替换页面内容,除非返回的值是undefined。

<a href="javascript:void(0);">点我没有反应的!</a


void可用于返回undefined。underscore 源码没有出现 undefined,而用 void 0 代替。

因为undefined是全局对象的一个属性。也就是说,它是全局作用域的一个变量。undefined的最初值就是原始数据类型undefined。

在现代浏览器(JavaScript 1.8.5/Firefox 4+),自ECMAscript5标准以来undefined是一个不能被配置(non-configurable),不能被重写(non-writable)的属性。

但是事实并非如此,undefined有可能在非全局作用域中被当作标识符(变量名)来使用(因为undefined不是一个保留字)。

(function() {
var undefined = 'foo';
console.log(undefined, typeof undefined)
})()//chrome -- foo string
(function(undefined) {
console.log(undefined, typeof undefined)
})('foo')//chrome -- foo string

所以用void 0替代undefined,更重要的是它不能被重写。

在ES5下,void 0替代undefined能够省字节大小,对压缩代码很有帮助。

上一篇下一篇

猜你喜欢

热点阅读