码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2017-04-14 13:36:11      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:color   foo   关注   class   作用域   声明   str   pre   一段   

在js学习中,词法作用域是必须要掌握的!

在这里,我将总结一下《你不知道的JS》一书中词法作用域的重点并分享给大家!

首先带来一段代码示例:

function foo(){
            console.log(a);//2
        }
        function bar(){
            var a = 3;
            foo();
        }
        var a = 2;
        bar();

js词法作用域输出结果:"2"; 动态作用域输出结果:"3"

下面我将对两种作用域的输出结果进行分析:

#在对结果分析之前首先我们要了解的是:词法作用域关注函数在何处声明,而动态作用域关注函数从何处调用

##词法作用域代码解析:bar() 会调用 foo(),foo() 再查询所需变量,因为函数是在foo处声明的,所以会从foo所在作用域进行查找,所得结果为"2";

##动态作用域代码解析:由于函数是从 bar()开始调用的,因此会从 bar()所在作用域查找变量,因此按照动态作用域的运行结果得到的结果是"3".

 

#最后要强调的一点:在JS中并不具有动态作用域!!!

 

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

标签:color   foo   关注   class   作用域   声明   str   pre   一段   

原文地址:http://www.cnblogs.com/wccc/p/6708269.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!