转自: http://blog.csdn.net/zyz511919766/article/details/7276089
一、Javascript的变量的scope是根据方法块来划分的(也就是说以function的一对大括号{ }来划分)。切记,是function块,而for、while、if块并不是作用域的划分标准,可以看看以下几个例子:
- <script>
- function test2(){
- alert ("before for scope:"+i);
-
-
- for(var i=0;i<3;i++){
- alert("in for scope:"+i);
- }
- alert("after for scope:"+i);
-
- while(true){
- var j = 1;
- break;
- }
- alert(j);
-
- if(true){
- var k = 1;
- }
- alert(k);
- }
-
- test2();
-
- alert(i);
- alert("这行打印还会输出吗?");
- alert(j);
- alert(k);
- </script>
二、Javascript在执行前会对整个脚本文件的声明部分做完整分析(包括局部变量),从而确定实变量的作用域。怎么理解呢?看下面一个例子:
- <script>
- var a =1;
- function test(){
- alert(a);
-
-
- a=4
- alert(a);
- var a;
- alert(a);
- }
- test();
- alert(a);
- </script>
三,当全局变量跟局部变量重名时,局部变量的scope会覆盖掉全局变量的scope,当离开局部变量的scope后,又重回到全局变量的scope,而当全局变量遇上局部变量时,怎样使用全局变量呢?用window.globalVariableName。
- <script>
- var a =1;
- function test(){
- alert(window.a);
- var a=2;
- alert(a);
- }
- test();
- alert(a);
- </script>