看到这个
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(使用前将#替换为@)