我对jQuery插件进行了反向工程,发现了一个奇怪的函数定义。
function myFunction(value, undefined){
...
}
当然可以,但是类似的声明类似
function myFunction(value, null) {
...
}
OR
function myFunction(value, 5) {
...
}
不起作用。
参数为undefined
的初始声明的工作方式类似于默认参数值(请参见下面的代码段)。有人可以指出ECMA6规范中的这种现象。我对寻找什么都有线索。
function strange (value, undefined) {
document.getElementById("output").innerHTML += "<br/>" + "- " + arguments[1];
}
strange(5,6);
strange(5);
<div id="output"></div>
答案 0 :(得分:7)
奇怪的是,undefined
不是 保留关键字,并且可以覆盖其全局值(或者在某些运行时环境中,它可以是过去的值)。因此,该技巧提供了一种方法来包装期望undefined
真正为undefined
的代码:调用该函数时,如果仅传递了一个参数,则第二个参数“ undefined”将具有真实的{函数中的{1}}值。
undefined
为什么会被覆盖?谁知道。那些为还必须托管第三方代码(通常为广告之类的东西)的页面编写代码的人不久后就会变得偏执和防御。