4

我一直在阅读我公司项目的 javascript 源代码并遇到了这个

if (options.parse === void 0) options.parse = true;

不知道0这里做什么?

4

1 回答 1

9

void运算符非常有趣:它接受一个操作数,计算它,然后表达式的结果是undefined。所以0不是无关紧要的,因为void运算符需要一个操作数。

人们有时使用来避免符号可以void 0被覆盖的事实(如果您不使用严格模式)。例如:undefined

undefined = 42;

另外,undefined在一个窗口中不是===undefined另一个窗口中。

因此,如果您正在编写一个库并且想要有点偏执,无论是关于人们重新定义undefined还是您的代码可能用于多窗口情况(框架等),您可能不会使用该符号undefined来检查某些东西是否是undefined. 通常的答案是使用typeof whatever === "undefined",但=== void 0可以工作(好吧,它可能在多窗口情况下不起作用,具体取决于您将其与什么进行比较)并且更短。:-)

于 2013-04-25T17:47:49.203 回答