小编典典

`void 0` 是什么意思?

all

阅读 Backbone.js 源代码,我看到了:

validObj[attr] = void 0;

是什么void 0?在这里使用它的目的是什么?


阅读 123

收藏
2022-03-08

共1个答案

小编典典

是什么void 0意思?

void[MDN]是一个前缀关键字,它接受一个参数并始终返回undefined.

例子

void 0
void (0)
void "hello"
void (new Date())
//all will return undefined

那有什么意义呢?

这似乎很无用,不是吗?如果它总是返回undefined,那么只使用undefined它自己有什么问题?

在一个完美的世界里,我们可以安全地使用undefined: 它比 . 更简单、更容易理解void 0。但是,如果您以前从未注意到,
这并不是一个完美的世界 ,尤其是在涉及 Javascript 时。

using
的问题undefined在于undefined它不是保留字(它实际上是全局对象[wtfjs]的属性)。也就是说,undefined是一个允许的变量名称,因此您可以随意为其分配一个新值。

alert(undefined); //alerts "undefined"
var undefined = "new value";
alert(undefined) // alerts "new value"

注意:这在任何支持 ECMAScript 5 或更新版本的环境(即实际上除了 IE 8
之外的所有环境)都不再是问题,它将undefined全局对象的属性定义为只读(因此只能在您自己的本地范围)。但是,此信息对于向后兼容的目的仍然有用。

alert(window.hasOwnProperty('undefined')); // alerts "true"
alert(window.undefined); // alerts "undefined"
alert(undefined === window.undefined); // alerts "true"
var undefined = "new value";
alert(undefined); // alerts "new value"
alert(undefined === window.undefined); // alerts "false"

void,另一方面,不能被覆盖。void 0总会 回来undefinedundefined另一方面,它可以是 Javascript
先生决定他想要的任何东西。

为什么void 0,具体来说?

为什么要使用void 0?有什么特别之处0?我们不能同样容易地使用1, or 42, or 1000000or"Hello, world!"吗?

答案是,是的,我们可以,而且效果也一样。0传入而不是其他参数的唯一好处0是简短且惯用。

为什么这仍然相关?

尽管undefined在现代 JavaScript 环境中通常可以信任,但它有一个微不足道的优势void 0:它更短。编写代码时不必担心这种差异,但它可以在大多数代码压缩器替换的大型代码库上加起来足够多undefinedvoid 0以减少发送到浏览器的字节数。

2022-03-08