JavaScript“undefined”vs“void 0”

时间:2011-04-19 13:18:28

标签: javascript undefined void

undefinedvoid 0之间究竟有什么区别?

哪个是首选,为什么?

4 个答案:

答案 0 :(得分:45)

不同之处在于某些浏览器允许您覆盖undefined的值。但是,void(anything)始终返回真实undefined

undefined = 1;
console.log(!!undefined); //true
console.log(!!void(0)); //false

答案 1 :(得分:16)

undefined has normal variable semantics that not even strict mode can fix并要求运行时查找。它可以被遮蔽 与任何其他变量一样,默认全局变量undefined在ES3中不是只读的。

void 0实际上是undefined的编译时防弹常量,没有查找要求。它是 比如写nulltrue,而不是查找变量值。它开箱即用,没有任何安全参数,写入时间更短。它在各方面都更好。

答案 2 :(得分:1)

JS在语法上非常宽松,这里的括号是可选的,void 0void(0)是等价的。

对于第二个问题,您需要直接使用undefined,同时避免不必要的操作数评估以检索相同的undefined值。

参考资料中的更多信息:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/void

答案 3 :(得分:0)

使用undefined。它比void(0)更常见。