猿问

如何理解javascript词法作用域?

最近在看词法作用域,遇到一个例子不是很理解

var value = 1;

function foo() {

    console.log(value);

}

function bar() {

    var value = 2;

    foo();

}

bar(); //结果是1



function bar() {

    var value = 2;

    function foo() {

         console.log(value);

    }

    foo();

}


bar();//结果是2


第一个例子,在执行foo函数时先是从foo函数内部查找局部变量value,

因为foo函数中没有value变量所有又向上一层查找,此时查找的是全局

变量value=1,不太明白的是foo函数的上一层为什么不是bar函数?这两个例子

有什么区别吗?


米脂
浏览 498回答 2
2回答

子衿沉夜

因为第一个foo是在外面定义的,它的上一层不是bar
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答