2017-08-10 244 views
-1

有人可以幫我理解爲什麼x的值是'undefined'嗎?Javascript全局變量訪問

var x = 100; 

function test() { 

    if(false) { 

     var x = 199; 
    } 

    alert(x); 
} 

test(); 
+0

由於變量是本地當前函數範圍 –

+1

https://stackoverflow.com/search?q=%5Bjavascript%5D+hoisting – deceze

+0

@litelite的'的x'外函數被函數 –

回答

0

當你在裏面定義一個新的變量時,如果它只在裏面可見。

考慮到通過寫var之前再次聲明變量x,它將成爲僅在if內部可見的變量。

通過刪除該var,它將被更改,如果驗證和警報將始終工作。

var x = 100; 
 

 
function test() { 
 

 
    if(false) { 
 

 
     x = 199; 
 
    } 
 

 
    //alert(x); 
 
    console.log(x); 
 
} 
 

 
test();

+0

爲什麼不在'test()'函數內聲明變量? – Jer

+2

「一個只在'if'內部可見的變量」 - 不,不是。這並不能解釋行爲。 – deceze

+0

@Jer idk它取決於他需要什麼,我只是解釋了這是什麼問題^^ –