文档章节

浅谈js的作用域(scope)

流光韶逝
 流光韶逝
发布于 2015/01/21 17:59
字数 521
阅读 669
收藏 26

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,则b为bar内的新变量,
   a+=b+c;//执行完a为21,就近向上覆盖到了foo函数内的a;
   }
    bar();
  }//foo函数结束时,foo函数内的a为21,b为5;而页面(全局)变量a仍为2;
  function soo(){
   a = 12;
  } //执行完页面变量a=12,就近覆盖全局变量a;
  function  new(){
   b = 15;//向上作用域无变量b,则新建全局变量b=15;
  }

© 著作权归作者所有

下一篇: 电站查询纪要
流光韶逝
粉丝 21
博文 123
码字总数 143360
作品 0
济南
程序员
私信 提问
加载中

评论(2)

流光韶逝
流光韶逝 博主

引用来自“苏生不惑”的评论

作用域是个坑

感觉确实要用到这东西。是坑也得填啊。
苏生不惑
苏生不惑
作用域是个坑
细说JavaScript数据类型及转换

细说JavaScript数据类型及转换 JavaScript数据类型 1.Boolean(布尔) 布尔:(值类型)var b1=true;//布尔类型 2.Number(数字) 数值:(值类型)var n1=3.1415926;//数值类型 n1.toFixed...

开元中国2015
2015/07/13
103
1
JavaScript作用域 - 学习Javascript的基石之一(转)

1.作用域 JavaScript的作用域与C、Java等语言不同,它不是以花括号包围的块级作用域,这个特性经常被大多数人忽视。例如下面代码,在大多数类C的语言中会出现变量未定义的错误,但在JavaScr...

顽Shi
2014/02/13
167
0
Javascript作用域原理(转)

问题的提出 首先看一个例子: 运行结果是什么呢? 上面的问题, 我相信会有很多人会认为是: 因为会以为在echo中, 第一次alert的时候, 会取到全局变量name的值, 而第二次值被局部变量name覆盖, 所...

菜到没谱
2013/01/24
588
2
图解Javascript上下文与作用域

本文尝试阐述Javascript中的上下文与作用域背后的机制,主要涉及到执行上下文(execution context)、作用域链(scope chain)、闭包(closure)、等概念。 >> 原文 << Execution context 执...

rainyear
2015/07/06
948
7
翻译 - JavaScript中的作用域与变量声明提升

本文地址:http://blog.163.com/jinluhz/blog/static/113830152201131132035178/ 原文地址:http://www.adequatelygood.com/2010/2/JavaScript-Scoping-and-Hoisting 原文作者:ben cherry ......

蜗牛奔跑
2015/06/19
47
0

没有更多内容

加载失败,请刷新页面

加载更多

代理模式之JDK动态代理 — “JDK Dynamic Proxy“

动态代理的原理是什么? 所谓的动态代理,他是一个代理机制,代理机制可以看作是对调用目标的一个包装,这样我们对目标代码的调用不是直接发生的,而是通过代理完成,通过代理可以有效的让调...

code-ortaerc
今天
5
0
学习记录(day05-标签操作、属性绑定、语句控制、数据绑定、事件绑定、案例用户登录)

[TOC] 1.1.1标签操作v-text&v-html v-text:会把data中绑定的数据值原样输出。 v-html:会把data中值输出,且会自动解析html代码 <!--可以将指定的内容显示到标签体中--><标签 v-text=""></......

庭前云落
今天
8
0
VMware vSphere的两种RDM磁盘

在VMware vSphere vCenter中创建虚拟机时,可以添加一种叫RDM的磁盘。 RDM - Raw Device Mapping,原始设备映射,那么,RDM磁盘是不是就可以称作为“原始设备映射磁盘”呢?这也是一种可以热...

大别阿郎
今天
12
0
【AngularJS学习笔记】02 小杂烩及学习总结

本文转载于:专业的前端网站☞【AngularJS学习笔记】02 小杂烩及学习总结 表格示例 <div ng-app="myApp" ng-controller="customersCtrl"> <table> <tr ng-repeat="x in names | orderBy ......

前端老手
昨天
16
0
Linux 内核的五大创新

在科技行业,创新这个词几乎和革命一样到处泛滥,所以很难将那些夸张的东西与真正令人振奋的东西区分开来。Linux内核被称为创新,但它又被称为现代计算中最大的奇迹,一个微观世界中的庞然大...

阮鹏
昨天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部