首页 > 代码库 > 区分词法作用域(js)与动态作用域(精!)
区分词法作用域(js)与动态作用域(精!)
在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)与动态作用域(精!)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。