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

Lor*_*mon 2 javascript

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

function myFunction(value, undefined){
  ...
}
Run Code Online (Sandbox Code Playgroud)

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

function myFunction(value, null) {
  ...
}
Run Code Online (Sandbox Code Playgroud)

要么

function myFunction(value, 5) {
  ...
}
Run Code Online (Sandbox Code Playgroud)

不工作.

参数undefined的默认参数值的初始声明(请参阅下面的代码段).有人可以在ECMA6规范中指出这种现象.我知道甚至要搜索什么.

function strange (value, undefined) {
  document.getElementById("output").innerHTML += "<br/>" + "- " + arguments[1];
}

strange(5,6);
strange(5);
Run Code Online (Sandbox Code Playgroud)
<div id="output"></div>
Run Code Online (Sandbox Code Playgroud)

Poi*_*nty 7

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

为什么会undefined被覆盖?谁知道.为必须托管第三方代码(通常是广告和类似内容)的网页编写代码的人会在一段时间后变得偏执和防守.

  • 总结比我在2分钟内做得更好:D (2认同)