js void 0 代替undefined
2020-07-08 10:31
120 查看
undefined 并不是保留词(reserved word),它只是全局对象的一个属性,在低版本 IE 中能被重写。
var undefined = 10; // undefined -- chrome // 10 -- IE 8 alert(undefined);
undefined 在 ES5 中已经是全局对象的一个只读(read-only)属性了,它不能被重写。但是在局部作用域中,还是可以被重写的。
(function() { var undefined = 10; // 10 -- chrome alert(undefined); })(); (function() { undefined = 10; // undefined -- chrome alert(undefined); })();
为什么替代品是 void 0?
The void operator evaluates the given expression and then returns undefined.
意思是说 void 运算符能对给定的表达式进行求值,然后返回 undefined。也就是说,void 后面你随便跟上一个表达式,返回的都是 undefined,都能完美代替 undefined!那么,这其中最短的是什么呢?毫无疑问就是 void 0 了。其实用 void 1,void (1+1),void (0) 或者 void “hello”,void (new Date()) 等等,都是一样的效果。更重要的前提是,void 是不能被重写的(cannot be overidden)。
那么,ES5 大环境下,void 0 就没有用武之地了吗?答案是否定的,用 void 0 代替 undefined 能节省不少字节的大小,事实上,不少 JavaScript 压缩工具在压缩过程中,正是将 undefined 用 void 0 代替掉了。
相关文章推荐
- js中用 void 0 代替 undefined
- void 0 代替 undefined
- JS魔法堂:从void 0 === undefined说起
- js 代替 <a href="javascript void(0)" onclick="openWin(3,this)"></a>
- JS魔法堂:从void 0 === undefined说起
- javascript js undefined null 0 false void(0) NaN 空字符串 比较 区别
- underscore.js中为什么用void 0来验证undefined
- 【跟着子迟品underscore】从用 `void 0` 代替 `undefined` 说起
- js中的null 与undefined
- 关于js中 undefined 类型,包括typeof 及 instanceof
- [转]JS基础之undefined与null的区别
- JS中形如(function(window, undefined) {})(window)写法的理解
- js中undefined,null,NaN的区别
- js中a标签里href="javascript:void(0)"的用途
- JS中Null与Undefined的区别
- JS中null和undefined的区别
- js中undefined情况总结
- js 返回 undefined 值的情况
- js基础篇——call/apply、arguments、undefined/null
- JS —— typeof 判断与直接判断是否为undefined 的区别