关于javascript:JS笔记1作用域

了解作用域


引擎:负责JavaScript程序的编译及执行过程

编译器:负责语法分析及代码生成

作用域:负责收集并保护所有申明的标识符

作用域的嵌套:一个块或者函数嵌套在另一个块级作用域中时,就产生了块级作用域的嵌套。因而在以后作用域中无奈找到某个变量时,引擎就会在外层的作用域查找,直到找到该变量或者到达最外层作用域(全局作用域)为止。

var value=1;
function bar1(){
    var value=2;
    function foo1(){
        console.log(value);
    }
    foo1();
}
bar1();//2

词法作用域:一个变量和函数的词法作用域取决于该变量或函数申明的中央,写在哪词法作用域就在该块作用域。

var value=1;
function foo2(){
    console.log(value);
}

function bar2(){
    let value=2;
    foo2();
}

bar2();//1

为什么两者的后果不同呢?
这是因为JS采纳的是词法作用域,及变量或函数的作用域是由申明时地位决定的。对于foo1,它的作用域是bar1所以后果为2,对于foo2,它在申明时作用域是在window中,所以查找时foo2外部没有value,向外查找window中value

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理