2015-06-21 81 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。