函数arguments和实参的关系
严格模式和非严格模式
严格模式:arguments和实参不会相互影响
非严格模式:arguments和实参会相互影响
函数中参数使用es6默认值,此函数默认开启严格模式
// fn函数使用了es特性函数参数默认值,这里使用的结构赋值,开启严格模式
function side(arr){
// arr的变化不会对a b 产生影响
arr[0] = arr[2];
}
function fn(a, b, c = 10){
c = 3;
// c -> 3
side(arguments);
// a -> 1
// b -> 1
// c -> 3
return a + b + c;
}
fn(1, 1, 1) // 5
// 非严格模式下函数arguments和实参互相影响
function side(arr){
// arr -> [1, 1, 3]
arr[0] = arr[2];
// arr -> [3,1,3]
}
function fn(a, b, c){
c = 3;
// c -> 3
side(arguments);
// a -> 3
// b -> 1
// c -> 3
return a + b + c;
}
fn(1, 1, 1) // 7
留言