“未定义”参数在函数定义中表示什么

时间:2019-02-01 21:39:34

标签: javascript

我对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>

1 个答案:

答案 0 :(得分:7)

奇怪的是,undefined不是 保留关键字,并且可以覆盖其全局值(或者在某些运行时环境中,它可以是过去的值)。因此,该技巧提供了一种方法来包装期望undefined真正为undefined的代码:调用该函数时,如果仅传递了一个参数,则第二个参数“ undefined”将具有真实的{函数中的{1}}值。

undefined为什么会被覆盖?谁知道。那些为还必须托管第三方代码(通常为广告之类的东西)的页面编写代码的人不久后就会变得偏执和防御。