“ void 0”是什么意思?[重复]

2020/09/25 06:21 · javascript ·  · 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是一个允许的变量名,因此您可以根据自己的意愿为它分配一个新值。

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,或42,或1000000"Hello, world!"吗?

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

为什么这仍然有意义?

尽管undefined在现代JavaScript环境中通常可以信任void 0它,但是它有一个琐碎的优点:它更短。所不同的是不够的,如何编写代码时省心,但它可以加起来足以在大的代码库,大多数代码minifiers替代undefinedvoid 0减少发送到浏览器的字节数。

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

var undefined = "HAHA";

void是保留的JavaScript关键字。它计算表达式并始终返回undefined

本文地址:http://javascript.askforanswer.com/void-0shishenmeyisizhongfu.html
文章标签: ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!