参考:https://segmentfault.com/q/1010000007406985/a-1020000007437795
摘要:
事实上,void
的返回值都是undefined
。 https://developer.mozilla.org...
在ES5之前,window
下的undefined
是可以被重写的,于是导致了某些极端情况下使用undefined会出现一定的差错。
所以,用void 0
是为了防止undefined
被重写而出现判断不准确的情况。
注: ES5之后的标准中,规定了全局变量下的
undefined
值为只读,不可改写的,但是局部变量中依然可以对之进行改写。
补充一下:非严格模式下,undefined是可以重写的,严格模式则不能重写。