javascript - 为什么js中要用void 0 代替undefined,还是有特别的含义呢
本文介绍了javascript - 为什么js中要用void 0 代替undefined,还是有特别的含义呢的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
这个是Backbone.js中的一句源码
if (callback !== void 0 && 'context' in opts && opts.context === void 0) opts.context = callback;
此处void 0和undefined意义一样吗,我f12 chrome后,
undefined === void 0;//true
解决方案
事实上,void
的返回值都是undefined
。 https://developer.mozilla.org...
在ES5之前,window
下的undefined
是可以被重写的,于是导致了某些极端情况下使用undefined会出现一定的差错。
所以,用void 0
是为了防止undefined
被重写而出现判断不准确的情况。
注: ES5之后的标准中,规定了全局变量下的
undefined
值为只读,不可改写的,但是局部变量中依然可以对之进行改写。
补充一下:非严格模式下,undefined是可以重写的,严格模式则不能重写。
这篇关于javascript - 为什么js中要用void 0 代替undefined,还是有特别的含义呢的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文