此问题在此处已有答案:
What does "javascript:void(0)" mean?(14个答案)
两年前就关门了。
在阅读Backbone.js源代码时,我看到了以下内容:
validObj[attr] = void 0;
什么是void 0
?在这里使用它的目的是什么?
此问题在此处已有答案:
What does "javascript:void(0)" mean?(14个答案)
两年前就关门了。
在阅读Backbone.js源代码时,我看到了以下内容:
validObj[attr] = void 0;
什么是void 0
?在这里使用它的目的是什么?
3条答案
按热度按时间uurity8g1#
void 0
是什么意思?void
[MDN]是一个前缀关键字,它采用一个参数,并始终返回undefined
。示例
这有什么意义?
如果它总是返回
undefined
,那么只使用undefined
本身又有什么错呢?在理想情况下,我们可以安全地使用
undefined
:它比void 0
简单得多,也更容易理解。但是,如果您以前没有注意到,* 这并不是一个完美的世界 *,尤其是当涉及到Javascript时。使用
undefined
的问题是undefined
不是保留字(it is actually a property of the global object [wtfjs]),也就是说,undefined
是一个允许的变量名,因此您可以随意为其赋值。注意:在任何支持ECMAScript 5或更新版本的环境中(即除了IE 8之外的任何地方),这不再是一个问题,ECMAScript 5或更新版本将全局对象的
undefined
属性定义为只读(因此只可能在您自己的局部范围内隐藏变量)。但是,此信息对于向后兼容性仍然有用。另一方面,
void
不能被覆盖。void 0
将 * 总是 * 返回undefined
。另一方面,undefined
可以是Javascript先生决定的任何东西。具体为什么是
void 0
?为什么我们要使用
void 0
?0
有什么特别之处?我们就不能简单地使用1
、42
、1000000
或"Hello, world!"
吗?答案是,是的,我们可以这样做,而且它也同样有效。传入
0
而不是其他参数的唯一好处是0
简短而符合习惯。为什么这仍然相关?
尽管
undefined
在现代JavaScript环境中通常是可信的,但void 0
有一个微不足道的优点:在编写代码时,这种差异并不足以让人担心,但在大型代码库中,这种差异可能会累积到足够多的程度,以至于大多数代码小型化器会将undefined
替换为void 0
,以减少发送到浏览器的字节数。wqsoz72f2#
void 0
返回undefined且不能覆盖,而undefined
可以覆盖。ckocjqey3#
void
是保留的JavaScript关键字。它计算表达式并始终返回undefined
。