码迷,mamicode.com
首页 > Web开发 > 详细

js中变量的作用域

时间:2014-08-16 22:30:31      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:java   io   strong   for   ar   问题   cti   div   

我们都明白局部变量的优先级大于全局变量,或者说内围作用域的变量的优先级比外围的高。如果在当前作用域找不到此变量时,它就往外围的作用域找。不过,在这之前,有一个值得注意的问题就是:究竟当前作用域有没有这个变量。像javascript这样的解释型语言,基本分为两个阶段,编译期(下面为符合大多数语言的称呼习惯,改叫预编译)与运行期。在预编译阶段,它是用函数来划分作用域,然后逐层为var变量与函数定义分配内存空间,再然后对var变量进行特殊处理,统统赋初始值为undefined。

var a=100;
var b=true;
function test(){
alert(a);
alert(b);
b=false;
alert(b);
var a=200;
alert(a);
}
test();
第一次a输出的是undefine,第一次b输出的是true;
第二次a的输出的是200,第二次是b是false;
把上面的例子修改一下
var a=100;
var b=true;
function test(){
alert(a);
alert(b);
var b=false;
alert(b);
var a=200;
alert(a);
}
test();
第一次a输出的是undefine,第一次b输出的是undefine;
第二次a的输出的是200,第二次是b是false;
 

javascript的作用域是指变量和函数可以访问的范围,分为局部作用域和全局作用域,这个和C语言是类似的,但是不同点是javascript的作用域没有块级作用域,不像C语言的{}可以表示一个块级的作用域,javascript只有函数作用域,在函数内部声明的变量只能在函数体和子函数可以访问,这个函数的外部不能访

//没有块级作用域

if(true){

var n=1;

}

alert(n);//1

for(var i=0;i<10;i++){

}

alert(i);//10

上面的例子要是在C语言或者java中n和i会在{}语言执行完之后销毁,在javascript中可以看到,它们并没有销毁,说明并没有块级作用域。

 

 

 

js中变量的作用域,布布扣,bubuko.com

js中变量的作用域

标签:java   io   strong   for   ar   问题   cti   div   

原文地址:http://www.cnblogs.com/hexiaoli/p/3916981.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!