void 是一元运算符,它可以出现在任意类型的操作数之前执行操作数,却忽略操作数的返回值,返回一个 undefined。void 常用语 HTML 脚本中执行 JavaScript 表达式,但不需要返回表达式的计算结果。
在下面代码中,使用 void 运算符让表达式返回 undefined。
var a = b = c = 2; //定义并初始化变量的值
d = void (a -= (b *= (c += 5))); //执行void运算符,并把返回值赋予变量d
console.log(a); //返回-12
console.log(b); //返回14
console.log(c); //返回7
console.log(d); //返回undefined
由于 void 运算符的优先级比较高(14),高于普通运算符的优先级,所以在使用时应该使用小括号明确 void 运算符操作的操作数,避免引发错误。
在下面两行代码中,由于第一行代码没有使用小括号运算符,则 void 运算符优先执行,返回值 undefined 再与 1 执行减法运算,所以返回值为 NaN。在第二行代码中由于使用小括号运算符明确 void 的操作数,减法运算符先被执行,然后执行 void 运算,最后返回值是 undefined。
console.log(void 2 - 1); //返回NaN
console.log(void (2 - 1)); //返回undefined
void 运算符也能像函数一样使用,如 void(0) 也是合法的。在特殊环境下一些复杂的语句可能不方便使用 void 运算符,而必须使用 void 函数。
console.log(void (i = 0)); //返回undefined
console.log(void (i = 0;i++)); //返回undefined