' void 0 '是什么意思?
What does `void 0` mean?
通读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
是一个允许的变量名,因此您可以随意为它赋一个新值。
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
将总是返回undefined
。另一方面,undefined
可以是Javascript先生想要的任何东西。
为什么是void 0
?
为什么我们应该使用void 0
?0
有什么特别之处?难道我们不能简单地使用1
、42
、1000000
或"Hello, world!"
吗?
答案是,是的,我们可以,它也会工作得很好。传递0
而不是其他参数的唯一好处是0
简短且习惯。
为什么这仍然相关?
尽管undefined
在现代JavaScript环境中通常是可信的,但void 0
有一个微不足道的优势:它更短。在编写代码时,这种差异并不足以让人担心,但它可以在大型代码库中累积起来,大多数代码缩小器将undefined
替换为void 0
,以减少发送到浏览器的字节数。
void 0
返回undefined,不能覆盖,而undefined
可以覆盖。
var undefined = "HAHA";
void
是保留的JavaScript关键字。它计算表达式并始终返回undefined
。
- 为什么javascript:void(0)在Firefox中不起作用
- CKEditor如何允许href="javascript:void(0)"在小部件中
- @@(“at at”)在ES6 JavaScript中是什么意思
- minimy javascript是什么意思?Backbone.js
- var w = q||问2;这个表达式是什么意思
- 什么'它的意思是当一个变量位于括号外时
- Javascript 类型未定义和 void 之间的区别
- 函数(i,val)在javascript中是什么意思
- 问号在这段代码中是什么意思
- 我不知道此代码中的这些符号是什么意思.十进制到二进制
- 什么意思是“;向原型添加方法”;
- ||{}在javascript中是什么意思
- “转义字符串”在Regex中是什么意思?(Javascript)
- 什么是“;传递给NewPromiseCapability的非构造函数值“;意思是
- 什么是“;(''+元素+'')“;意思是
- 这个代码是什么意思(history.replaceState和history.pushstate)
- :: 是什么意思
- 对Javascript感到困惑.布尔函数可以充当void函数
- JavaScript:void是什么意思
- ' void 0 '是什么意思?