Sha*_*ane 3 javascript ecmascript-6
当它能够w从外部范围拾取时,为什么不能拾取z?
var w = 1, z = 2;
function foo( x = w + 1, y = x + 1, z = z + 1 ) {
console.log( x, y, z );
}
foo(); Run Code Online (Sandbox Code Playgroud)
它能够
w从外部范围内拾取
是的,因为您w的函数中没有变量。
为什么不能接
z?
因为您的参数声明了一个名称为 的局部变量z,并且影响了全局变量。但是,本地表达式尚未使用默认表达式中的值进行初始化,并ReferenceError在访问它时抛出 a 。这就像对时间死区let/const,
let z = z + 1;
Run Code Online (Sandbox Code Playgroud)
也会扔。您应该将变量重命名为其他名称以使其工作。