javascript作用域总结
2015-07-05 10:25
513 查看
javascript共有三种作用域 :全局作用域,局部作用域,eval作用域。
eval作用域可以这么使用eval() 、window.eval()。
javascript没有块作用域,即
函数定义时确定作用域,而非调用时确定。作用域链是根据函数定义时的位置确定的,而不是在调用时确定的。作用域链是在调用函数之前创建,因此可以创建闭包。可以让函数全局作用域返回一个嵌套函数,但该函数仍可以通过作用域链访问其父函数作用链。
eval作用域可以这么使用eval() 、window.eval()。
javascript没有块作用域,即
var foo=1; if(true){ var foo=2; for (var i = 3; i <=5; i++){ var foo=i; console.log(foo); } } console.log(foo);//输出3,4,5,5;覆盖了全局变量
var foo=10000; var slm={ name:"slm", age:24, sex:"male", showage:function(){ if(true){ var foo=100; for (var i = 3; i <=5; i++){ var foo=i; console.log(foo); } console.log(foo); } console.log(foo); }() } slm.showage; console.log(foo);输出3,4,5,5,5,10000;局部的值都覆盖了,全局变量没覆盖作用域链和原型链的区别并不大,都是通过位置体系和分层体系进行变量查找。当作用域链内最近位置查到变量,查找就结束,返回第一个匹配结果。
函数定义时确定作用域,而非调用时确定。作用域链是根据函数定义时的位置确定的,而不是在调用时确定的。作用域链是在调用函数之前创建,因此可以创建闭包。可以让函数全局作用域返回一个嵌套函数,但该函数仍可以通过作用域链访问其父函数作用链。
相关文章推荐
- js eval() 全局作用域
- 再议javascript变量作用域
- javascript常用功能汇总
- 如何编写一个JSON解析器
- js实现的省市联动
- javascript的this关键字的理解
- js数组的创建与遍历
- javascript 单例模式
- javascript原型链继承
- javascript常用功能汇总
- javascript 应用小技巧方法汇总
- javascript遇到html5的一些表单属性
- javascript实现控制的多级下拉菜单
- 面向对象的程序设计1 理解对象—— JS学习笔记2015-7-4(第75天)
- js回调函数2
- JavaScript数独求解器
- JavaScript拼图小游戏
- JavaScript日期控件,用select实现
- JSP简单标签的总结及案例
- JSON API描述以及示例程序