如何理解下划线源中的"return obj === void 0"?

Fre*_*ind 16 javascript underscore.js

可能重复:
"javascript:void(0)"是什么意思?
什么void 0意思?

http://underscorejs.org/underscore.js文件中,您可以看到这样的代码块:

// Is a given variable undefined?
_.isUndefined = function(obj) {
  return obj === void 0;
};
Run Code Online (Sandbox Code Playgroud)

我不明白这void 0部分,这很奇怪.怎么理解呢?

Tam*_*mil 11

这是控制台输出

>typeof void 0
"undefined"
>void 0 === undefined
true
>"undefined".length
9
>"void 0".length
6
Run Code Online (Sandbox Code Playgroud)

我认为他们正在尝试保存3个字节的文件大小;)

编辑: 这个SO答案更有意义void 0,因为undefined它只是window对象的一个属性,是可变的.因此,这void 0是一种在浏览器中生成未定义的可信方式

  • 这实际上是错误的解释.在Javascript中,您可以覆盖undefined:undefined ="foobar".void 0是一种以无中断方式表示未定义的方法. (5认同)
  • `void`几乎就像`typeof`,它不是一个函数,而是一个运算符 (4认同)
  • 谢谢,但有关于"void 0"的解释吗?我以为它是`void(0)`的函数调用但缺少`()`.似乎不正确. (2认同)

Den*_*ret 7

在javascript(从1.1开始)中,void运算符用于计算表达式并返回undefined.

请参阅void运算符的ECMAScript语言规范

void 0是一种正确而标准的生产方式undefined.

由于它是操作员,因此不需要括号.

  • 此外,问题是可以覆盖JS中的全局undefined并导致大量破坏.那样使用void 0的库就更安全了. (2认同)