关于underscore.js中isUndefiend函数的疑问?
_.isUndefined = function(obj) {
return obj === void 0;
};
为什么可以通过 obj === void 0 来判断一个值是否是undefined
主要原因是 undefined 在某些浏览器中可以被改写:
<script type="text/javascript">
undefined = 20;
alert(undefined); // 20 (IE8 下)
</script>
而 void 0 是任何情况下都是 undefined
JavaScript中void操作符执行一个表达式,并返回undefined; void(expression);
void(0);等价于 void 0;
可以在控制台测试一下:
void(a=1);
console.log(a);//输出1
所以上面的代码的含义就是 判断一个 object === undefined;但是 void 0 比 undefined 更短;
可参考:[](http://stackoverflow.com/questions/1291942/what-does-javascriptvoid0-mean)
void语句返回undefined