最近看國外經典教材的時候發現JavaScript與熟知的Java,C,C++都不同的特性,其中一個就是變量的生命周期。
1.在JavaScript中,對於for循環中定義的i變量,其生命周期在循環結束后仍然是有效的。
1
2
3
4
|
for
(
var
i=0; i < 10; i++){
doSomething(i);
}
alert(i);
//10
|
這樣的特性對於我們傳統的習慣來說是不可理解的,這是因為JavaScript變量作用范圍沒有語句塊的概念,他並不像JAVA一樣在for循環內部聲明的變量,在for循環外部就不能使用。
2.對於全局變量和局部變量的區分,要對var的使用特別注意。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<html>
<head></head>
<body>
<script type=
"text/javascript"
>
var
global_one =
"I am global"
;
function
fun(){
global_two =
"I am global too"
;
var
local_one =
"I am local"
;
}
alert(global_one);
// "I am global"
//alert(global_two);// error
//alert(local_one);//error
fun();
alert(global_one);
// "I am global"
alert(global_two);
// "I am global"
//alert(local_one);//error
</script>
</body>
</html>
|
從上面的實例可以看到兩點:
第一,JavaScript中的方法內部定義變量的時候如果沒有加var,就是全局變量;否則為局部變量;
第二,當fun()沒有執行的時候,方法內部的全局變量是不會聲明並且定義的。
Reference: