我应该在JavaScript中使用`void 0`或`undefined`

时间:2013-10-14 20:47:30

标签: javascript

我应该在JavaScript中使用void 0undefined取消分配值,例如:

event.returnValue = void 0;

event.returnValue = undefined;

3 个答案:

答案 0 :(得分:34)

如果您使用的是现代浏览器(支持javascript 1.8.5),使用undefinedvoid 0很可能是相同的(since undefined is made not writable),除了{{1可以接受表达式作为参数并对其进行评估。

在较旧的浏览器中,(不支持javascript 1.8.5)最好使用void。看看这个例子:

void 0

会打印

console.log(undefined);
var undefined = 1;
console.log(undefined);

1 实际上是一个全球财产。 (它不是关键字)。因此,可以更改undefined,其中undefined是一个运算符,不能在javascript中重写并始终返回值void。请查看我今天早些时候给出的一个类似问题https://stackoverflow.com/a/19367635/1903116的答案。

<强>结论:

因此,如果您担心兼容性,最好选择undefined

答案 1 :(得分:3)

“void 0”更安全。 “undefined”是一个值,就像任何其他值一样。可以用另一个值覆盖该值:

undefined = 3;

这会改变你的event.returnValue的含义你使用了undefined。但是,“void”是一个关键字,其含义无法改变。 “void 0”将始终给出未定义的值。

答案 2 :(得分:1)

  

void运算符通常仅用于获取未定义的原始值,通常使用“void(0)”(相当于“void 0”)。在这些情况下,可以使用未定义的全局变量(假设它尚未分配给非默认值)。

https://stackoverflow.com/a/1291950/2876804

只需使用undefined,因为它们都会评估它。