认识js中的void操作符

1,440 阅读1分钟

1. 什么是void?

void是一元运算符,出现在操作数的左边,操作数可以是任意类型的值,void右边的表达式可以是带括号形式(例如void(0)),也可以是不带括号的形式(例如void 0)

示例1

console.log(void 2 - 1);  //返回NaN
console.log(void (2 - 1));  //返回undefined

void运算符的优先级比较高,高于普通运算符优先级,所以在使用时应该使用小括号明确 void 运算符操作的操作数,避免引发错误。 由于第一行代码没有使用小括号运算符,则 void 运算符优先执行,返回值 undefined 再与 1 执行减法运算,所以返回值为 NaN。 在第二行代码中由于使用小括号运算符明确 void 的操作数,减法运算符先被执行,然后执行 void 运算,最后返回值是 undefined。

示例2

console.log(void (i = 0));  //返回undefined
console.log(void (i = 0;i++));  //返回undefined

void 运算符也能像函数一样使用,如 void(0) 也是合法的。在特殊环境下一些复杂的语句可能不方便使用 void 运算符,而必须使用 void 函数。

2. 使用void 0代替undefined的原因是?

  • 使用void 0比使用undefined能够减少3个字节
>"undefined".length
9
>"void 0".length
6
  • 保证取到undefined值,因为这种方法比字面写的undefined值来的更有安全感。

  • undefined并不是javascript中的保留字,我们可以使用undefined作为变量名字,然后给它赋值。void 0输出唯一的结果undefined,保证了不变性。

3. undefined与null的区别?

null代表空值,代表“定义了但是为空”。而undefined的代表未定义。