词法作用域和动态作用域
2018-03-08 11:34
169 查看
//JS环境是词法作用域,函数在声明时,其所处的位置已经决定了作用域,无论这个函数在哪里被调用,都不会改变。
var a = 6; function foo() { console.log( a ); } function bar() { var a = 3; foo(); } bar() //6
//1. 如果处于**词法作用域**,也就是现在的js环境。变量a首先在foo()函数中查找,没有找到。 //于是顺着作用域链到全局作用域中查找,找到并赋值为6,所以控制台输出6。 // 2. 如果处于**动态作用域**,同样地,变量a首先在foo()中查找,没有找到。 //这里会顺着调用栈在调用foo()函数的地方,也就是bar()函数中查找,找到并赋值为3。
**简而言之,词法作用域是在定义时确定的,而动态作用域是在运行时确定的**
相关文章推荐
- 词法作用域和动态作用域
- 理清JS中的词法、静态、动态、函数、块作用域
- 词法作用域与动态作用域的区别
- 不同作用域(scope)的Spring Bean之间的依赖关系的动态代理注入
- 静态作用域与动态作用域
- Angular——作用域($scope)内变量的变量名是动态的
- Java 动态代理作用是什么?
- 第17章 cil和动态程序集的作用
- 2. JavaScript深入之词法作用域和动态作用域
- Java 动态代理作用是什么 ==AOP?
- 虚函数有个十分重要的作用,之动态绑定
- 设计模式学习(二):接口的作用1-动态加载实例-简单工厂模式
- 验证service_names、db_name、db_unique_name在注册动态监听服务名时的作用
- JAVA动态代理的作用
- ListView的动态刷新问题——用notifyDataSetChanged没作用
- android - ListView的动态刷新问题——用notifyDataSetChanged没作用
- 动态与代理AOP--01【代理的作用与概念】【动态代理与AOP】
- C++的存储持续性(自动、静态、动态),作用域,链接性
- C语言学习9: malloc动态内存存储,动态内存分配去空格字符增长版,动态内存分配去符号incr增长版,型参和返回值都是int型的函数的指针,main函数的地址也可以用指针指向,typedef定义函数指针,函数定义与嵌套的作用,返回函数指针类型,const作用
- 浅谈静态作用域和动态作用域