严格模式下函数的限制:
- 不能把函数命名为
eval或arguments(语法错误) - 不能把参数命名为
eval或arguments(语法错误) - 不能出现两个命名参数同名的情况;(语法错误)
arguments参数
ECMAScript中,参数 用一个数组表示,函数接收到的始终是这个数组,不关系数组中包含哪些参数。
在函数体内,可以通过arguments对象访问这个参数数组;
arguments对象 与数组类似,但不是Array的实例,可以用方括号语法访问它的每一个元素,使用length确定传递进来的有多少个参数;
参数的命名,只提供便利,不是必须的;
非严格模式下的arguments:
- 它的值 始终与 对应命名参数的值保持同步;二者的值会同步,但内存空前是独立的; (严格模式下,值不会同步,重写
arguments的值会导致语法错误(即arguments = [1, 2]报错); - 命名参数的个数决定了
arguments对象的长度;
示例:
function func1 (a, b) {
arguments[1] = 10
console.log(b)
console.log(arguments.length)
}
func1(1, 2) // 可以看到b也被改成了10
func1(3) // 可以看到 arguments.length 始终为1