2015-06-21 73 views
-1

我在JavaScript中很新,我對變量範圍有一些疑問。JavaScript變量作用域究竟如何工作?

所以我tryed執行此示例:

function outer() { 

    alert("INTO outer()"); 
    var val1 = 1; 

    inner(); 

    alert(val2); 
} 

function inner() { 
    alert("INTO inner()"); 

    val2 = 2; 


} 

outer(); 

在這個簡單的例子中,外()功能是執行,在該函數I調用內()函數聲明和初始化val2變量。然後回到outer()函數,並從這裏訪問並打印val2的值。

因此,在Javascript中,我可以從外部函數訪問在內部函數中定義的變量,但我無法從內部函數訪問在外部函數中聲明的變量。

這是真的嗎?如果這是真的,爲什麼選擇?

回答

2

「內部」函數中的聲明缺少var關鍵字。這使得val2 a 全球符號。

3

的確如此。在函數'outer'中var的使用使得val1局部變量,而函數'inner'的val2具有全局作用域,因爲沒有使用關鍵字var。