void
运算符会执行其内容,并总是返回undefined
-
void()
函数同理 - 可用于防止全局变量中的
undefined
已被重定义为其他内容
其实undefined
、NaN
和Infinity
都只是全局对象 window 的属性,可以被赋值。只不过writable
设置成了false
,所以赋值无效 - 在函数前加
void
等于强制让函数返回值为undefined
- 立即调用的函数表达式
在使用立即执行的函数表达式时,可以利用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);">
这个链接点击之后不会做任何事情,如果去掉 void(),
点击之后整个页面会被替换成一个字符 0。
</a>
<p> chrome中即使<a href="javascript:0;">也没变化,firefox中会变成一个字符串0 </p>
<a href="javascript:void(document.body.style.backgroundColor='green');">
点击这个链接会让页面背景变成绿色。
</a>