我正在对一个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)
奇怪的是,undefined它不是保留关键字,它的全局值可以被覆盖(或者在某些运行时环境中可能过去).因此,该技巧提供了一种方法来包装期望undefined真正的代码undefined:当调用该函数时,如果只传递一个参数,则第二个参数(称为"未定义")将undefined在函数内部具有真实值.
为什么会undefined被覆盖?谁知道.为必须托管第三方代码(通常是广告和类似内容)的网页编写代码的人会在一段时间后变得偏执和防守.
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |