js作用域

function A(){

    var a=1;

    var d=2;

    B(d);


}

function B(d){

    console.log(a);

}

A() //Error a is undefined

对js函数执行的作用域一直有点不明白
想问一下,像上面的代码,因为在函数A内部调用B函数,那整个作用域链不是应该是B-A-window嘛?那我如果是找a,在作用域链最顶端(即B)找不到a之后,为啥不在A中找,好像直接就在全局环境中了是吗?
麻烦能告知除了传a参数进去还有什么别的解决办法,谢谢啦~~

翻翻过去那场雪
浏览 228回答 3
3回答

Helenr

js的作用域是词法作用域无论函数在哪里被调用,也无论它如何被调用,它的词法作用域都只由函数被声明时所处的位置决定。如果把B定义在A里面,B就可以读到a了。

慕桂英3389331

不是看调用的情况,是看如何定义的。如果你在函数A中定义函数B,B的作用域链就是B-A-window。
打开App,查看更多内容
随时随地看视频慕课网APP