js闭包问题

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();

小白搞不懂了,求大神告知这里输出什么,为什么?


FFIVE
浏览 453回答 1
1回答

慕村9548890

foo执行的时候,innnerFoo会复制foo的作用域链,形成闭包,所以fn执行的时候,也就是innnerFoo执行会沿着作用域链向上寻找a,可以找到为2,但是找不到c,c在bar函数中的作用域链中,innnerFoo没有在此作用域链中声明c,所以会报错
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript