阅读下划线的来源,我注意到使用void 0
代替undefined
。我知道在某些浏览器中,undefined可以被覆盖,并且在许多情况下,解决这个问题的方法只是在调用函数或return;
时忽略参数。事实上,为了缩小目的,这样做比使用void 0
更有意义。
此问题jquery's aproach:
(function (window, undefined){
/* ... */
}(window));
在任何意义上似乎都更好。它比void 0
更具可读性,可以进一步缩小,并且可以提供一些微小的性能提升,如链接答案中所述。
好的,void 0在下划线中出现约6次,在骨干中出现9次,因此它没有太大的区别。所以,我的问题是:有void 0
更适合的理由或角落情况吗?
答案 0 :(得分:1)
这是一个为什么“未定义的论证”可能是一个可怕的想法的例子。
让我们说你已经习惯了这样做。你开始将它应用于其他功能,如:
function doSomething(undefined) {
// blah blah blah
if( something == undefined) {
// problem
}
}
一切都好,对吧?
假设这个函数是一个事件处理程序。
someElement.onclick = doSomething;
亲爱的,亲爱的。 doSomething
传递了一个Event对象,肯定是不是 undefined
!
void 0
更加强大,因为它不依赖于怪癖或假设工作。
答案 1 :(得分:0)
正如您所说,void 0
表示undefined
。由于旧版浏览器undefined
可以被覆盖。
void 0
得到保证,并且始终未定义。但我不认为,没有参数undefined(jquery way)和void 0
之间没有太大区别。
我认为,void 0
只是一种编码偏好。