见这个
let foo = 'outer';
function bar(func = x => foo) {
let foo = 'inner';
console.log(func());
}
bar(); //outer
我想知道为什么输出是'外部'而不是“内心”。我知道JavaScript有词法范围。这个输出让我觉得函数x => foo
是在函数bar
答案 0 :(得分:0)
我知道js有词法范围,这个输出让我觉得函数
x => foo
是在函数bar
之外定义的
不完全是。它位于:参数声明中,它有自己的作用域,可以访问其他参数但不能访问正文。默认初始值设定项basically desugars to
let foo = 'outer';
function bar() {
var func = arguments[0] === undefined ? x => foo : arguments[0];
{
let foo = 'inner';
console.log(func());
}
}
bar(); // outer