為什么80%的碼農都做不了架構師?>>> ??
javascript中的變量的作用域不同于java/c的變量規則。
1、在java/c中,如果有一個全局變量與一個局部變量重名,那么在局部變量的作用域中,局部變量會覆蓋掉全局變量的值。當離開局部變量的作用域后,全局變量又會重新起作用。也就是說,當有局部變量存在時,程序中起作用的是局部變量的值。
而局部變量的作用域是:if / for / while ...等代碼塊的 {} 中,出了 {},局部變量就不存在了。(java中代碼塊 {}中的內嵌的局部變量不能相同。如:2個for中不能出現相同的 int i 的變量定義。)
public class Test {int i=5;public static void main(String[] args) {Test test = new Test();test.test();//局部變量覆蓋全局變量test.test2();//沒有局部變量,所以全局變量可以起作用。}//測試局部變量private void test(){int i=10;System.out.println(i);}//測試全局變量private void test2(){System.out.println(i);}
}
2、在javascript中,局部變量的作用域是在 function(){} 中的整個 {} 。只要是在方法中定義的變量,在整個方法中就可以使用,不管變量是定義的function內的任何地方。變量的作用域劃分與java/c并不相同。當然,此時的局部變量同樣會將方法外的變量覆蓋。
<script type="text/javascript">
var i = 0;
function test(){alert(i); // 輸出 undefined。因為在方法中已經對i進行了定義,而還沒有賦值。for(var i=0; i<3; i++);alert(i); //輸出 3 。因為在for中定義的var i是可以在整個方法 test 中起作用的。
}
</script>
?