JavaScript“undefined”vs“void 0”

问题描述 投票:29回答:4

undefinedvoid 0究竟有什么区别?

哪个是首选,为什么?

javascript undefined void
4个回答
46
投票

不同之处在于某些浏览器允许您覆盖undefined的值。然而,void(anything)总是返回真正的undefined

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

16
投票

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

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


1
投票

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

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

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


0
投票

使用undefined。它比void(0)更为人所知。

© www.soinside.com 2019 - 2024. All rights reserved.