JavaScript Function 手册

68 阅读1分钟

严格模式下函数的限制:

  • 不能把函数命名为 evalarguments(语法错误)
  • 不能把参数命名为 evalarguments(语法错误)
  • 不能出现两个命名参数同名的情况;(语法错误)

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