变量与作用域

一、var box="blue";
function setColor(){
return 123;
}
alert(box);==alert(window.box); ---blue //全局变量属于window的属性
alert(setColor());==alert(window.setColor()); ---123 //全局函数属于window的方法

二、var box="blue";
function setColor(){
var box="red";
}
setColor();
alert(box);---blue //因为setColor函数是在window全局作用局下的方法,所以,alert出来的也是全局下的变量。

var box="blue";
function setColor(){
box="red"; //去掉了var,这个变量就是全局变量了
}
setColor();
alert(box);---red

三、var box="blue";
function setColor(box){
alert(box);----red //传参也是局部变量
}
setColor("red");
alert(box);---blue

四、作用域链,函数体内还包含着函数,只有这个函数才可以访问内一层的函数。

function setBox() {

function setColor() {
return 123;
}
}
alert(setColor());会报错,因为setColor()方法的作用域在setBox(),而不是window内。那怎么调用setColor呢:
function setBox() {

function setColor() {
return 123;
}
return setColor();
}
alert( setBox());这样就可以了

但是if语句的花括号等代码块没有作用域的功能,也就是说它们可以通过window全局去访问的。

时间: 2024-11-11 06:36:30

变量与作用域的相关文章

第四章—变量,作用域和内存问题(二)

第四章-变量,作用域和内存问题(二) JS没有块级作用域 js没有块级作用域,这个概念容易导致误解,这里就区分下几个情况,大家好好参考下: 我们知道,在其他类C的语言中,由花挂号封闭的代码块都有自己的作用域.但是在JS中,却没有块级作用域: 这里if(true){}代表条件永真,永远执行这条.if(false){}的话就是永远不执行这条. 这个代码执行之后,在if语句定义的变量,在if语句外可以访问的到.在if语句中的变量声明会将变量添加到当前的执行环境中(这里是全局环境). 还有如下的两个例子

Js中变量的作用域

一.理解函数作用域需要理解以下几点:    1.函数变量的作用域有全局变量和局部变量两种,全局变量写在函数的最前面,局部变量写在函数体内,局部变量省略了var 也就默认成为了全局变量!    2.函数体内部可以读取到函数外的变量,而函数外不能读取到函数内的变量! 在理解了函数变量的作用域之后,也需要理解函数的作用域链了:    1.每一个函数都有一个与之相关的作用域链,当js在查找变量X时,它会从链的第一个对象开始查找,如果这个对象有一个名为X的属性值,则会直接使用这个 属性值,如果没有就继续下

C的日记-变量的作用域、生存期和内存位置

“天地玄黄,宇宙洪荒”,先有天地,之后方有古今.变量同是,先有变量的作用域(存在的地点),然后出现了变量的生存期(存在的时间). [变量存储的方式]首先变量实际上是存放到两个区域的: 静态存储区:是指在程序运行区间由系统分配固定的存储空间的方式. 动态存储区:程序运行期间根据需要动态的分配存储空间. [变量分类] 局部变量:在[函数]内部声明的变量. [作用域]:从定义变量的位置到本函数结束. <1>自动变量(auto变量),即动态局部变量,不专门声明为static的变量.          

javaScript定义函数的三种方式&amp;amp;变量的作用域

一.函数定义 方式1.普通方式定义函数 function 函数名(參数n){ 函数体 } function add(a,b){ return a+b; } 方式2.直接量定义函数 var 函数名=function(參数n){ 函数体 } var add=function(a,b){ return a+b; } 方式三.构造方式定义函数 var 函数名=new Function(參数n,函数体); var add = new Function('a,b','return a+b;'); 二.变量的

Java中的变量与变量的作用域

关于Java中的变量及变量的作用域 关于Java中的变量及变量的作用域 0. 变量的概念 在程序运行期间,系统可以为程序分配一块内存单元,用来存储各种类型的数据.系统分配的内存单元要使用一个标记符来标识,这种内存单元中的数据是可以更改的.所有叫变量.定义变量的标记符就是变量名,内存单元中所装载的数据就是变量值.用一个变量定义一块内存以后,程序就可以用变量名代表这块内存中的数据.根据所存储数据类型的不同,有各种不同类型的变量. 1. Java的变量类型 2. 注意变量的有效取值范围 系统为不同的变

&lt;02&gt;关键字+标识符+常量表示+变量+作用域

标识符命名的规范 规范的内容:1)起一个有意义的名称  2)一般情况下遵守驼峰命名法 核心的思想: 1.如果一个标示符有多个单词组成 1)第一单词的首字母小写,其他单词的首字母都大写 2)或者所有的单词的首字母都大写 ------------------------------------------------ 常量的概述及分类 计算机中的常量:表示固定不变的数据,用常量来表示 常量的分类:整形常量.实型常量.字符常量.字符串常量 不同类型的常量表示方法 1)10进制整形常量(计算默认的使用1

变量和作用域的小结

有代码如下: var a = 5; function A(){ alert(a); var a = 10; alert(this.a); } new A(); 结果: undefined  undefined 第一个是变量提升,相当于 var a = 5; function A(){ var a ; alert(a);    //undefined a = 10;   //L3 alert(this.a); } new A(); 第二个,首先声明a是一个全局变量,函数A中又声明了一个局部变量,所

oc中的构造方法和description方法,变量的作用域,

1.构造方法的声明和实现 //声明 - (id) initWithAge:(int) age andNo: (int) no; //实现 - (id) initWithAge:(int) age andNo: (int) no { self=[super init];//调用父类的init方法初始化 //判断对象是否为空 也可以直接写if(self) 或 if(self=[super init]) if(self!=nil) { _age=age; _no=no; } return self;

黑马程序员 02-成员变量的作用域

———Java培训.Android培训.iOS培训..Net培训.期待与您交流! ——— 1.作用域基本概念 局部变量.全局变量都有自己的作用域,成员变量也不例外. 作用域的概念:在什么范围内可以访问,这个范围就是作用域. 2.成员变量的作用域类型 @public         在任何地方都可以直接访问 @protected    可以在当前类与子类的实现@implementation中直接访问,外界想访问只能用set  get方法访问 @private        只能在当前类的实现@im

python变量和作用域

1.作用域介绍 python中的作用域分4种情况: L:local,局部作用域,即函数中定义的变量: E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的: G:globa,全局变量,就是模块级别定义的变量: B:built-in,系统固定模块里面的变量,比如int, bytearray等. 搜索变量的优先级顺序依次是:作用域局部>外层作用域>当前模块中的全局>python内置作用域,也就是LEGB. x = int(2.9) # int