“void 0”是什么意思?
可能重复:
“javascript:void(0)”是什么意思?
通过Backbone.js源代码阅读,我看到这样的:
validObj[attr] = void 0;
什么是void 0
? 这里使用它的目的是什么?
void 0
是什么意思?
void
[MDN]是一个前缀关键字,它接受一个参数并始终返回undefined
。
例子
void 0 void (0) void "hello" void (new Date()) //all will return undefined
这是什么意思?
这似乎很无用,不是吗? 如果它总是返回undefined
,那么使用undefined
本身有什么问题呢?
在一个完美的世界中,我们可以安全地使用undefined
:比void 0
更容易理解。 但是如果你以前从来没有注意过, 这不是一个完美的世界 ,特别是当涉及到Javascript。
使用undefined
的问题是undefined
不是保留字( 它实际上是全局对象[wtfjs]的一个属性 )。 也就是说, undefined
是一个允许的variables名称,所以你可以在自己的随机分配一个新的值。
alert(undefined); //alerts "undefined" var undefined = "new value"; alert(undefined) // alerts "new value"
注意:在任何支持ECMAScript 5或更新版本的环境(即实际上在任何地方,除了IE 8),这已经不再是一个问题,它将全局对象的undefined
属性定义为只读(所以只能将variables在你自己的本地范围内)。 但是,这些信息对于向后兼容目的仍然有用。
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
将始终返回undefined
。 另一方面, undefined
可以是Javascript先生决定他希望成为的任何东西。
为什么void 0
,具体?
为什么我们应该使用void 0
? 关于0
的特别之处是什么? 难道我们不能轻易使用1
,或42
,或1000000
或"Hello, world!"
?
答案是,是的,我们可以,而且也是一样的。 传递0
而不是其他论点的唯一好处是0
短而惯用。
为什么这仍然是相关的?
尽pipe在现代JavaScript环境中, undefined
通常是可信的,但void 0
有一个简单的优点:它更短。 编写代码时,差异不足以担心,但它可以在大代码基础上加起来,大多数代码缩减器用void 0
代替undefined
,以减less发送到浏览器的字节数。
void 0
返回undefined,不能被覆盖, undefined
可以被覆盖。
var undefined = "HAHA";
void
是一个保留的JavaScript关键字。 它评估expression式并总是返回undefined
。