【发布时间】:2012-11-19 23:03:24
【问题描述】:
为什么 underscore.js 的 isUndefined 是这样定义的?
_.isUndefined = function(obj) {
return obj === void 0;
};
为什么这行不通?
typeof obj === 'undefined'
【问题讨论】:
-
typeof obj === "undefined"有效,但字符串很难看
为什么 underscore.js 的 isUndefined 是这样定义的?
_.isUndefined = function(obj) {
return obj === void 0;
};
为什么这行不通?
typeof obj === 'undefined'
【问题讨论】:
typeof obj === "undefined" 有效,但字符串很难看
好的,首先typeof obj === 'undefined' 速度较慢,您可以轻松验证。
那么问题是为什么要进行比较
obj === void 0
对
obj === undefined
让我们看看:
void 0; 返回一元运算符 void 的结果,它将始终返回 undefined(即 void 1 没有区别)
undefined 指向全局变量undefined。
一般情况下两者是一样的。我认为虽然void 0 是首选,因为可以使用局部变量undefined 来影响undefined :) 这很愚蠢,但它确实发生了。
【讨论】:
它的编写方式可能更有效。何不剖析一下这两个定义看看?
【讨论】:
如果你写了viod,你会得到一个语法错误。您将“未定义”拼写为'undeifned',但您没有收到任何错误。所以,一个可能的原因是更容易调试! :)
【讨论】: