使用void 0 替代 undefined


某厂有一条规定:不要直接使用 undefined 关键字,而要使用 void 0 来替代 undefined

起初看到这个规定是很不理解的
疑惑
为什么会有这么奇葩的规定

众所周知,定义变量的时候,像关键字:nulltruefalse都是不能定义的

但是 undefined 可以直接定义

因为undefined不是一个关键字,它只是全局对象window中的一个属性

这就意味着可以直接定义一个变量名为undefined,并且重新赋值
这并不意味着就能直接修改undefined的值,相反undefined虽然是window的一个属性,但是这个属性是只读的,并不能更改

这样问题又来了,既然无法更改,为什么又会有这样一条规定

看下面这个代码

也就是说,在函数内部声明一个名为undefined的变量是可以的,并且可以对它重新赋值

虽然这种情况几乎不可能发生,可能某厂也是担心undefined会带来的一些安全隐患吧

而他们使用的规避方法就是使用 void 0 而不是直接使用 undefined

void 0 是什么意思呢?

首先 void 是个关键字,它后面可以跟一个表达式,无论表达式是什么,最终整个表达式返回一个 undefined
也就是说写 void 0void 3.1415926
返回结果是一样的


文章作者: 中元
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 中元 !