js 词法作用域揭秘

Posted 嘉儿2017

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 词法作用域揭秘相关的知识,希望对你有一定的参考价值。

先看段代码:

//词法作用域
var scope = "global";
function fn1(){
    console.log(scope);
}
function fn2(){
    var scope = "local";
    fn1();
}
fn2();    

结果是global

为什么呢?

js是采用词法作用域,即静态作用域。

javascript 函数的执行用到了作用域链,这个作用域链是在函数定义的时候创建的。fn1调用fn2,fn2 的作用域链按照书写的位置查找,其中的变量 scope 一定是全部变量,不管何时何地执行函数 fn1(),打印的都是全局的“global”。

 

以上是关于js 词法作用域揭秘的主要内容,如果未能解决你的问题,请参考以下文章

你不知道的JS系列 ( 5 ) - 词法作用域

js中的词法作用域

js中的词法作用域

js 函数作用域, 块级作用域和词法作用域

区分词法作用域(js)与动态作用域(精!)

js词法作用域