为什么要用void(0)代替undefined?

其实遇到这个问题的时候,很诧异,作为3年前端工作经验的小白,居然对基本类型不是很了解

其实呢,是因为 JavaScript 的代码 undefined 是一个变量,而并非是一个关键字,它只是全局对象的一个属性,在低版本 IE 中能被重写。

var undefined = 10;

// undefined -- chrome
// 10 -- IE 8
alert(undefined);

  但实际上在ES5的时候,undefined已经是全局对象的一个只读(read-only)属性了,它不能被重写。但是在局部作用域中,还是可以被重写的。

(function(){
	var undefined = 10
	alert(undefined)
})() // 10
	
var undefined
(function(){
	undefined = 9
	alert(undefined)
})()// undefined

(function(){
	var a = void(0)
	alert(a === undefined?1:0)
})() // 1

  void 运算符能对给定的表达式进行求值,然后返回 undefined。也就是说,void 后面随便跟上一个表达式,返回的都是 undefined,都能完美代替 undefined,用 void 0 代替 undefined 能节省不少字节的大小。

参考:https://github.com/lessfish/underscore-analysis/issues/1

 

 每一个努力的人都值得被肯定,但是最大的肯定来源于自己!!!

     加油每一天!!!

posted @ 2020-10-12 15:36  張先森  阅读(278)  评论(0编辑  收藏  举报