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能够省字节大小,对压缩代码很有帮助。