var fn = null;
function foo() {
var a = 2;
function innnerFoo() {
console.log(c);
console.log(a);
}
fn = innnerFoo;
}
function bar() {
var c = 100;
fn();
}
foo();
bar();
小白搞不懂了,求大神告知这里输出什么,为什么?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
foo执行的时候,innnerFoo会复制foo的作用域链,形成闭包,所以fn执行的时候,也就是innnerFoo执行会沿着作用域链向上寻找a,可以找到为2,但是找不到c,c在bar函数中的作用域链中,innnerFoo没有在此作用域链中声明c,所以会报错其实这个题改成
更有意义,成为javascript变量作用域的概念很好的例题
了解词法作用域,你不知道的JS很不错,建议看看