Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “void 0”是什么意思?_Javascript_Backbone.js - Fatal编程技术网

Javascript “void 0”是什么意思?

Javascript “void 0”是什么意思?,javascript,backbone.js,Javascript,Backbone.js,通过阅读Backbone.js源代码,我看到了以下内容: validObj[attr] = void 0; 什么是空0?在这里使用它的目的是什么?是一个保留的JavaScript关键字。它计算表达式并始终返回未定义的值。void 0是什么意思? 是一个前缀关键字,它接受一个参数并始终返回undefined 例子 这有什么意义? 这看起来很没用,不是吗?如果它总是返回undefined,那么仅仅使用undefined本身有什么错 在一个完美的世界中,我们可以安全地使用undefined:它比vo

通过阅读Backbone.js源代码,我看到了以下内容:

validObj[attr] = void 0;
什么是空0?在这里使用它的目的是什么?

是一个保留的JavaScript关键字。它计算表达式并始终返回未定义的值。

void 0是什么意思? 是一个前缀关键字,它接受一个参数并始终返回undefined

例子

这有什么意义? 这看起来很没用,不是吗?如果它总是返回undefined,那么仅仅使用undefined本身有什么错

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

使用undefined的问题是undefined不是保留字。也就是说,undefined是一个允许的变量名,所以您可以根据自己的意愿为它指定一个新值

alert(undefined); //alerts "undefined"
var undefined = "new value";
alert(undefined) // alerts "new value"
注意:这在任何支持ECMAScript 5或更新版本的环境中都不再是一个问题,即在实践中,除了IE 8之外,IE 8将全局对象的未定义属性定义为只读,因此只能在您自己的局部范围内对变量进行阴影处理。但是,此信息对于向后兼容性仍然有用

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 0将始终返回未定义。另一方面,未定义可以是Javascript先生决定的任何内容

具体来说,为什么要空0? 为什么要使用void 0?0有什么特别之处?难道我们不能简单地使用1、42、1000000或Hello,world

答案是,是的,我们可以,它也会起作用。传递0而不是其他参数的唯一好处是0很短且惯用

为什么这仍然相关? 尽管在现代JavaScript环境中,未定义的代码通常是可信的,但void 0有一个微不足道的优点:它更短。编写代码时,这一差异还不足以令人担忧,但它可以在较大的代码基础上累积足够多的内容,使大多数代码缩微器用void 0替换undefined,以减少发送到浏览器的字节数。

void 0返回undefined,不能被覆盖,而undefined可以被覆盖

var undefined = "HAHA";

它可能比undefined短,并且保证返回它,不像全局可覆盖undefined。但是为什么它需要一个参数呢?有没有关于作废表达式的有用示例?为什么空0?而不是void 1?所以这基本上与if typeof options相同。something====“undefined”,我以前记得这是检查未定义的安全模式吗?@Sam不是真的,void x总是返回undefined。typeof x===undefined检查x是否未定义。另一种常见模式是在立即函数中提供undefined作为参数:functionundefined{…},这对缩小特别有用。有趣的是,当前版本的Chrome和Firefox没有这样做!:ECMAScript 5将未定义定义定义为已读-only@licancabur:我相信这只是在严格的模式代码中,是吗?哇,我一直在这方面得到反对票。3年前发布时,浏览器允许您将undefined设置为任何值。如果一个答案随着时间的推移变得多余,为什么不投票支持一个更新的答案?@epascarello,尽管您在那里写的内容在某种程度上是正确的,但是我不认为这是一个很清楚的问题,而是在问这是什么意思。关于void0的链接问题并没有很清楚地表明void是一个具有独特语法的特殊关键字。直到我找到这个问题,我才知道void0和void0是同一个关键字。
var undefined = "HAHA";