JavaScript"undefined"vs"void 0"

Pac*_*ier 36 javascript undefined void

undefined和 之间究竟有什么区别void 0

哪个是首选,为什么?

dur*_*uri 52

不同之处在于某些浏览器允许您覆盖其值undefined.但是,void(anything)总是回归真实undefined.

undefined = 1;
console.log(!!undefined); //true
console.log(!!void(0)); //false
Run Code Online (Sandbox Code Playgroud)

  • `void`是一个操作符而不是函数,所以你不必使用`void()`. (7认同)

Esa*_*ija 19

undefined 具有正常的变量语义,即使严格模式也无法修复,并且需要运行时查找.它可以像任何其他变量一样被遮蔽,并且默认的全局变量undefined在ES3中不是只读的.

void 0实际上是一个编译时防弹常数undefined,没有查找要求.这就像写null或者true,而不是寻找一个变量的值.它开箱即用,没有任何安全参数,写入时间更短.它在各方面都更好.

  • 在未压缩的代码中更短; 如果您使用[IIFE](http://benalman.com/news/2010/11/immediately-invoked-function-expression/),您可以将`undefined`缩小为类似`a`,而`void 0`不是minifiable :) (2认同)