void
运算符 对给定的表达式进行求值,然后返回 undefined
。
语法
void expression
描述
这个运算符能向期望一个表达式的值是undefined
的地方插入会产生副作用的表达式。
void 运算符通常只用于获取 undefined 的
原始值,一般使用 void(0)(等同于
void 0
)。在上述情况中,也可以使用全局变量undefined
来代替(假定其仍是默认值)。
立即调用的函数表达式
在使用立即执行的函数表达式时,可以利用 void
运算符让 JavaScript 引擎把一个函数识别成函数表达式而不是函数声明(语句)。
void function iife() { var bar = function () {}; var baz = function () {}; var foo = function () { bar(); baz(); }; var biz = function () {}; foo(); biz(); }();
JavaScript URIs
当用户点击一个以 javascript:
URI 时,浏览器会对冒号后面的代码进行求值,然后把求值的结果显示在页面上,这时页面基本上是一大片空白,这通常不是我们想要的。只有当这段代码的求值结果是 undefined
的时候,浏览器才不会去做这件傻事,所以我们经常会用 void
运算符来实现这个需求。像下面这样:
<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>
注意,虽然这么做是可行的,但利用 javascript:
伪协议来执行 JavaScript 代码是不推荐的,推荐的做法是为链接元素绑定 click
事件。
规范
Specification | Status | Comment |
---|---|---|
ECMAScript Latest Draft (ECMA-262) The void Operator |
Living Standard | |
ECMAScript 2015 (6th Edition, ECMA-262) The void Operator |
Standard | |
ECMAScript 5.1 (ECMA-262) The void Operator |
Standard | |
ECMAScript 3rd Edition (ECMA-262) The void Operator |
Standard | |
ECMAScript 1st Edition (ECMA-262) The void Operator |
Standard | Initial definition. Implemented in JavaScript 1.1 |
浏览器兼容性
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |