鉴于这种:
function hello(name, option) {
if (option === 'useless') {
return '!!!!';
} else {
return 'Hi, ' + name;
}
}
Run Code Online (Sandbox Code Playgroud)
如果option省略参数,似乎没有任何不好的事情发生.我真的需要检查一下吗?
if (typeof option !== 'undefined' && option === 'useless')
Run Code Online (Sandbox Code Playgroud)
你不需要typeof检查.
形式参数始终是函数范围内的有效标识符.
感兴趣的规范部分:
9.使用函数代码code和argumentList执行声明绑定实例化,如10.5中所述.
§10.5声明绑定实例(重点已添加)
4.如果代码是功能代码,那么
[...]
d.每串argName的名称,在列表顺序做
我.设n为n加1 的当前值
.如果Ñ大于argCount,让v被undefined否则令v为值Ñ个的元素" ARGS.
[...]
v.调用env的SetMutableBinding具体方法,将argName,v和strict作为参数传递.
这意味着,对于function f(arg) {}参数不足的调用(例如f()),arg绑定将被初始化undefined为其执行上下文(又称范围).
| 归档时间: |
|
| 查看次数: |
36 次 |
| 最近记录: |