函数默认参数有些问题?

2024-05-01

看到这个

let foo = 'outer';

function bar(func = x => foo) {
  let foo = 'inner';
  console.log(func()); 
}

bar(); //outer

我想知道为什么输出是“外部”而不是“内部”。我知道 JavaScript 有词法作用域。这个输出让我感觉这个函数x => foo被定义为函数外的bar


我知道 js 有词法作用域,这个输出让我感觉这个函数x => foo被定义为函数外的bar

不完全是。它位于中间:在参数声明中,它有自己的范围,可以访问其他参数,但不能访问主体。默认初始值设定项基本上脱糖 https://stackoverflow.com/q/44896829/1048572

let foo = 'outer';
function bar() {
  var func = arguments[0] === undefined ? x => foo : arguments[0];
  {
    let foo = 'inner';
    console.log(func());
  }
}
bar(); // outer
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

函数默认参数有些问题? 的相关文章

随机推荐