JavaScript 使用词法作用域,没有动态作用域
2016-12-12 15:19
218 查看
function foo() { console.log( a ); // 2 } function bar() { var a = 3; foo(); } var a = 2; bar();
上面的代码,控制台输出2,说明 JavaScript 没有动态作用域,只有词法作用域。
函数在申明时就决定了它的作用域,而不是在调用时,这就导致函数在功能封装上要注意不要随意引用外部变量。
不过通过改变 this 可以一定缓解没有动态作用域的情形。
主要区别:词法作用域是在写代码或者说定义时确定的,而动态作用域是在运行时确定的。(this 也是!)词法作用域关注函数在何处声明,而动态作用域关注函数从何处调用。
相关文章推荐
- JSP动态生成页面中使用JavaScript消除里面没有信息的div等元素
- 使用动态JavaScript实现多级菜单联动时不刷新页面的方法
- 使用JavaScript动态刷新页面局部内容
- 3.8 使用JavaScript动态改变选项
- 使用Javascript动态增加,删除表格(使用DHTML对象模型)
- 使用JavaScript和DOM动态创建表格
- 在网页中使用javascript打开没有最大化、最小化和关闭按钮的窗口
- 使用Javascript动态增加,删除表格
- 使用javascript动态添加和删除table的行和列
- 使用JavaScript动态增加表格的行与列
- 使用Javascript动态增加,删除表格(使用DHTML对象模型)
- 在网页中使用javascript打开没有最大化、最小化和关闭按钮的窗口
- 如何使用后台代码在head标记中动态生成javascript?
- 在网页中使用javascript打开没有最大化、最小化和关闭按钮的窗口
- 使用JAVASCRIPT实现动态增加、删除选择项
- ABAP--如何在join查询中使用动态表名(其实这样是没有必要的)
- 在网页中使用javascript打开没有最大化、最小化和关闭按钮的窗口
- 使用JavaScript和DOM动态创建表格
- 一个使用动态Javascript脚本绑定的注意事项
- ABAP--如何在join查询中使用动态表名(其实这样是没有必要的)