标签: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();
var
a=100;
var
b=
true
;
function
test(){
alert(a);
alert(b);
var b=
false
;
alert(b);
var
a=200;
alert(a);
}
test();
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中可以看到,它们并没有销毁,说明并没有块级作用域。
标签:java io strong for ar 问题 cti div
原文地址:http://www.cnblogs.com/hexiaoli/p/3916981.html