var undefined = void 0; vs jquery关闭vs ...?

spe*_*ufo 5 javascript undefined void underscore.js

阅读下划线的来源,我注意到使用void 0而不是undefined.我知道在某些浏览器中,undefined可以被覆盖,在许多情况下,解决这个问题的方法是在调用函数或return;-ing 时省略参数.事实上,为了缩小目的,这样做比使用更有意义void 0.

另外,jquery对这个问题的看法:

(function (window, undefined){
  /* ... */
}(window));
Run Code Online (Sandbox Code Playgroud)

从各方面来看似乎都更好.它更具可读性void 0,可以进一步缩小,并且可以提供一些微小的性能提升,如链接答案中所述.

好的,void 0在下划线中出现约6次,在主干中出现9次,因此它没有太大的区别.所以,我的问题是:是否有任何理由或角落案例void 0更可取?

Nie*_*sol 1

这是一个例子,说明为什么“未定义的参数”可能是一个可怕的想法。

假设您已经习惯这样做了。然后你也开始将它应用到其他函数中,如下所示:

function doSomething(undefined) {
    // blah blah blah
    if( something == undefined) {
        // problem
    }
}
Run Code Online (Sandbox Code Playgroud)

一切都很好,对吧?

假设这个函数是一个事件处理程序。

someElement.onclick = doSomething;
Run Code Online (Sandbox Code Playgroud)

哦亲爱的。doSomething传递了一个 Event 对象,这肯定不是 undefined

void 0更加稳健,因为它不依赖于怪癖或假设来工作。