关于javascript:如何理解下划线源中的“return obj === void 0”?

How to understand “return obj === void 0” in the source of underscore?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
What does “javascript:void(0)” mean?
What does void 0 mean?

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

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

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


这是控制台输出

1
2
3
4
5
6
7
8
>typeof void 0
"undefined"
>void 0 === undefined
true
>"undefined".length
9
>"void 0".length
6

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

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


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

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

所以void 0是生成undefined的正确和标准方法。

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