浅谈js的作用域(scope) - 流光韶逝的个人空间
2015-05-19 23:51
344 查看
js的作用域和java有很大的区别;在一个java类中,类的成员变量不可能和方法新建的变量重名;js则无此问题. 总的来说,js创建对象的作用域的特点有三条: 1.每var 一次 就在当前作用域中添加一个变量 ;不var就在全局内“向上就近”覆盖变量(没有旧对象覆盖则windows作用域内新建)。
2.覆盖的话是就近覆盖:如果被添加变量的"向上就近"作用域中有同名变量 会被覆盖掉;
3.方法执行的时候会从作用域链的右端开始查找变量(就近向上查找)
可以firebug断点运行以下js, 以查看效果,与三条参照.
var a=2; var foo=function(){ var a=3,b=5; var bar = function(){ var b = 7,c=11;//var b,http://ningbfpdk.tumblr.com/,则b为bar内的新变量, a+=b+c;//执行完a为21,就近向上覆盖到了foo函数内的a; } bar(); }//foo函数结束时,http://nantfpk.tumblr.com/,foo函数内的a为21,b为5;而页面(全局)变量a仍为2;
function soo(){ a = 12; } //执行完页面变量a=12,就近覆盖全局变量a; function new(){ b = 15;//向上作用域无变量b,http://wenzfpk.tumblr.com,则新建全局变量b=15; }
2.覆盖的话是就近覆盖:如果被添加变量的"向上就近"作用域中有同名变量 会被覆盖掉;
3.方法执行的时候会从作用域链的右端开始查找变量(就近向上查找)
可以firebug断点运行以下js, 以查看效果,与三条参照.
var a=2; var foo=function(){ var a=3,b=5; var bar = function(){ var b = 7,c=11;//var b,http://ningbfpdk.tumblr.com/,则b为bar内的新变量, a+=b+c;//执行完a为21,就近向上覆盖到了foo函数内的a; } bar(); }//foo函数结束时,http://nantfpk.tumblr.com/,foo函数内的a为21,b为5;而页面(全局)变量a仍为2;
function soo(){ a = 12; } //执行完页面变量a=12,就近覆盖全局变量a; function new(){ b = 15;//向上作用域无变量b,http://wenzfpk.tumblr.com,则新建全局变量b=15; }
相关文章推荐
- 浅谈js的作用域(scope)
- 浅谈js的解析顺序 作用域 严格模式
- 深入学习js之浅谈作用域(隐藏作用域和块作用域)
- 浅谈js命名空间管理
- JS核心系列:浅谈 函数的作用域
- AngularJs $scope作用域 深入探究
- you don't know js -- Scope and Closures学习笔记——第一章(什么是作用域)
- JS核心系列:浅谈函数的作用域
- 作用域(scope), 定义空间(declaration space) 和 生存期(lifetime)
- Angular.Js之Scope作用域的学习教程
- C语言中标识符的作用域、命名空间、链接属性、生命周期、存储类型(上)
- JS(JQ)分页 个人查看,没注释
- 浅谈Java中的存储空间类型
- 浅谈在node.js进入文件目录的问题
- 第三章 Js变量的作用域和匿名函数
- 浅谈 js中parseInt函数的解析
- js 变量作用域
- JS兼容问题个人笔记
- JS作用域与块级作用域
- 浅谈javascript中的作用域