argument 对象
argument 作为函数的实参集合,是一个类数组对象。
function printArgs() {
console.log(arguments,arguments[0])
}
printArgs("1", "a", 0, { foo: "B" }) // ["1", "a", 0, { foo: "B" }], "1"
arguments 包含一个 length 属性,可以用 arguments.length 来获得传入函数的参数个数。
function printArgs() {
console.log(arguments.length)
}
printArgs("1", "a", 0, { foo: "B" }) // 4
arguments 可以进行修改
function printArgs() {
"use strict"
arguments[0] = 1
console.log(arguments[0])
}
printArgs("1", "a", 0, { foo: "B" }) // 1
在严格模式下会与非严格模式下的值不同,下面是我在网上找的例子
function foo(a) {
"use strict"
console.log(a, arguments[0]) // 1 1
a = 10
console.log(a, arguments[0]) // 10 1
arguments[0] = 20
console.log(a, arguments[0]) // 10 20
}
foo(1)
而在严格模式下,函数中的参数与 arguments 对象没有联系,修改一个值不会改变另一个值。而在非严格模式下,两个会互相影响。
网友评论