53

我应该在 JavaScript 中使用void 0orundefined来取消赋值吗,例如:

event.returnValue = void 0;

或者

event.returnValue = undefined;
4

3 回答 3

71

如果您使用的是现代浏览器(支持 JavaScript 1.8.5),则使用undefined并且void 0很可能会产生相同的结果(因为undefined它是不可写的),除了void可以接受表达式作为参数并对其进行评估。

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

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

它会打印

1

undefined实际上是一个全局属性 - 它不是关键字。因此, undefined 可以更改,其中 asvoid是一个运算符,它不能在 JavaScript 中被覆盖并始终返回 value undefined。只需检查我今天早些时候给出的类似问题的答案,为什么 Javascript 中的 void 需要参数?.

结论:

因此,如果您担心兼容性,最好使用void 0.

于 2013-10-14T20:51:00.447 回答
13

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

undefined = 3;

如果您使用未定义,那将改变您的 event.returnValue 的含义。但是,“void”是一个关键字,它的含义不能改变。“void 0”将始终给出未定义的值。

于 2013-10-14T20:50:38.317 回答
1

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

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

只需使用 undefined,因为它们都会对其进行评估。

于 2013-10-14T20:50:02.397 回答