一、Javascript的變數的scope是根據方法區塊來分割的(也就是說以function的一對大括號{ }來分割)。切記,是function區塊,而for、while、if區塊並不是作用域的分割標準,可以看看以下幾個例子:
##
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <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在執行前會對整個腳本檔案的宣告部分做完整分析(包括局部變數),從而確定實變數的作用域。怎麼理解呢?看下面一個例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <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。
1 2 3 4 5 6 7 8 9 10 | <script>
var a =1;
function test(){
alert(window.a);
var a=2;
alert(a);
}
test();
alert(a);
</script>
|
登入後複製
變數的作用範圍
#1. 根據作用範圍不同,變數有全域變數和局部變數兩種。在函數裡定義的變數為局部變量,局部變數只在函數內有效。 如果局部變數和全域變數以相同的變數名,則局部變數會覆寫全域變數
1 2 3 4 5 6 7 8 9 10 11 12 | <script>
var test = "全局变量" ;
function checkscope( )
{
var test = "局部变量" ;
alert(test);
}
checkscope( );
</script>
|
登入後複製
2. JavaScript語言沒有區塊範圍
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <script>
function test(o)
{
var i = 0;
if (typeof o == "object" )
{
var j = 5;
for ( var k = 0; k < 10; k++)
{
document.write(k);
}
}
alert(k + "\n" + j);
}
test(document);
</script>
|
登入後複製
以上是Javascript變數型別與作用範圍實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!