只是想在我的脑袋周围包裹范围:-)
我如何重构此代码以便能够输出
函数'a', 'b' and 'c'
中的third()
?
没有混淆和不必要的理论的任何解释都将有所帮助。
var a = 1;
first = () => {
let b = 2;
second = () => {
let c = 3;
console.log(a, b); // Output 1, 2
third(); // Output 1, 2, 3
}
console.log(a); // Output 1
second();
}
third = () => {
console.log(a, b, c);
}
first();
最佳答案
b在函数third()的范围内未定义。您还将获得与c相同的错误。如果将“第三”的定义移到“第二”之内,则可以访问“第一”和“第二”的范围,因为它将成为对它们的封闭,然后您将获得预期的行为。
var a = 1;
first = () => {
let b = 2;
second = () => {
let c = 3;
console.log(a, b); // Output 1, 2
third = () => {
console.log(a, b, c);
}
third(); // Output 1, 2, 3
}
console.log(a); // Output 1
second();
}
first();
编辑:错别字