2012-07-10 102 views
16

可能重复:
What does “javascript:void(0)” mean?
What does void 0 mean?如何理解下划线来源中的“return obj === void 0”?

在文件http://underscorejs.org/underscore.js,你可以看到这样一个代码块:

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

我不明白的void 0部分,这很奇怪。如何理解它?

+0

http://stackoverflow.com/questions/7452341/what-does-void-0-mean – Freewind 2012-07-10 08:47:04

回答

11

这是控制台输出

>typeof void 0 
"undefined" 
>void 0 === undefined 
true 
>"undefined".length 
9 
>"void 0".length 
6 

我认为他们正试图挽救3个字节的文件大小;)

编辑:SO答案更有用void 0的意义,因为undefined只是window对象的属性,并且是可变的。因此void 0是生成跨浏览器undefined的值得信赖的方式

+2

谢谢,但是有关于“无效0”的解释吗?我认为这是一个函数调用'void(0)',但缺少'()'。似乎不正确。 – Freewind 2012-07-10 08:35:52

+4

'void'几乎就像'typeof',它不是一个函数,而是一个操作符 – Tamil 2012-07-10 08:40:02

+0

这很有道理。 – 2012-07-10 08:45:07

7

在javascript(自1.1)中,void运算符用于评估表达式并返回undefined

ECMAScript Language Specification of the void operator

所以void 0是产生undefined正确和标准的方式。

因为它是一个操作符,所以不需要括号。

+2

此外,这里的问题是,可以覆盖全球在JS中未定义并导致大量破坏。这样使用void 0的库更安全。 – 2012-07-10 08:52:48