undefined
和void 0
究竟有什么区别?
哪个是首选,为什么?
不同之处在于某些浏览器允许您覆盖undefined
的值。然而,void(anything)
总是返回真正的undefined
。
undefined = 1;
console.log(!!undefined); //true
console.log(!!void(0)); //false
undefined
has normal variable semantics that not even strict mode can fix并需要运行时查找。它可以像任何其他变量一样被遮蔽,并且默认的全局变量undefined
在ES3中不是只读的。
void 0
实际上是undefined
的编译时防弹常数,没有查找要求。这就像写null
或true
,而不是查找变量值。它开箱即用,没有任何安全参数,写入时间更短。它在各方面都更好。
JS在语法上非常松散,这里的括号是可选的,void 0
和void(0)
是等价的。
对于第二个问题,您需要直接使用undefined
,同时避免不需要的操作数评估以检索相同的undefined
值。
更多信息在参考:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/void
使用undefined
。它比void(0)
更为人所知。