"undefined"参数在函数定义中表示什么



我正在对jQuery插件进行逆向工程,发现了一个特殊的函数定义。

function myFunction(value, undefined){
  ...
}

当然,这有效,但类似的声明,如

function myFunction(value, null) {
  ...
}

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>

奇怪的是,undefined 不是保留关键字,其全局值可以被覆盖(或者可能在过去,在某些运行时环境中(。因此,这个技巧提供了一种包装期望undefined真正undefined的代码的方法:当调用该函数时,如果只传递一个参数,则称为"undefined"的第二个参数将在函数内具有真实的undefined值。

为什么undefined会被覆盖?谁知道呢。为还必须托管第 3 方代码(通常是广告和类似的东西(的页面编写代码的人在一段时间后变得偏执和防御。

最新更新