void 0 有什么意义?undefined 竟然是可变的?
前言
哈喽,大家下午好哇!今天我们来谈一下 JavaScript 中一个很有意思的现象,void 0 有什么意义?undefined 竟然是可变的?
说明
首先,我们要对 void 运算符有一个基本的了解:void 的正确使用方法是跟表达式,因为 void 会全部执行自身后面的表达式语句,但是它的返回值永远是 undefined。
我们要明白三件事情,一个是 void 运算符的作用,一个是 void 的返回值,还有一个是 undefined 是可以被重定义的。
1,void
后需要跟表达式,表达式中的语句会全部执行。
void
运算符 对给定的表达式进行求值,然后返回 undefined
例如:
2,void
返回值永远是undefined
例如:
3,undefined
在局部变量中是可以被重新定义的
虽然在 ES5 开始,undefined 就已经被设定为仅可读的,但是在局部作用域内,undefined 依然是可变的。
例如:
之所以用 void 0
或者 void(0)
代替 undefined
,很大一方面的原因就是undefined
可能会被重新赋值,你不能保证别人的代码里undefined
是undefined
。但是void
的返回值一定是undefined
。
另外,由于void 0
比undefined
要短一些,所占字符空间更少,所以在 js 压缩代码中,我们也经常能看到用 void 0 来代替 undefined 的情况。就像局部变量在压缩代码中会被 a,b,c 来代替一样。当然啦,如果你愿意,写void 1
来代替undefined
也是一样的。
后记
你好哇,我是南极大冰块,一个技术与颜值成正比的前端工程师,崇尚一针见血的搞定前端问题,希望我的博客有帮助到了你。
关注我,前端路途一起走。嘿哈~😛
版权声明: 本文为 InfoQ 作者【南极一块修炼千年的大冰块】的原创文章。
原文链接:【http://xie.infoq.cn/article/b9a4701dad24057c248d08026】。文章转载请联系作者。
评论