undefined
和void 0
之间究竟有什么区别?
哪个是首选,为什么?
答案 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
的编译时防弹常量,没有查找要求。它是
比如写null
或true
,而不是查找变量值。它开箱即用,没有任何安全参数,写入时间更短。它在各方面都更好。
答案 2 :(得分:1)
JS在语法上非常宽松,这里的括号是可选的,void 0
和void(0)
是等价的。
对于第二个问题,您需要直接使用undefined
,同时避免不必要的操作数评估以检索相同的undefined
值。
参考资料中的更多信息:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/void
答案 3 :(得分:0)
使用undefined
。它比void(0)
更常见。