函数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
最后修改日期: 2024年 4月 1日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。