2016-07-29 132 views
-1

我注意到,在JavaScript中,函数内部有时候会创建一个变量,而不会在前面提及varJavaScript中的局部变量和全局变量之间的区别?

例如:

function myfunction() { 
    x = 10; 
    var y = 10; 
} 

的是这两者之间的区别?

+4

我想看看这里:http://stackoverflow.com/questions/1470488/what-is-the-purpose-of-the-var-keyword-and-when-to-use-it- or-omit- – tetutato

回答

3

function myact() { 
 
    x = 20; 
 
    var y = 10; 
 
    console.log(x); 
 
    console.log(y); 
 
} 
 
myact(); 
 
console.log(x); 
 
//y not available here

var用于声明。所以,没有声明的赋值只会给它全局范围的含义:它将首先搜索它是否在上面的任何范围栈中可用,如果不是在全局范围中隐式地创建变量并赋值。

JS Docs says:

使用var声明的变量的范围是其当前的执行上下文 ,其是封闭函数,或对于任何函数外声明的变量 ,全球性的。

当执行 分配时,将值赋给未声明的变量会隐式地将其创建为 全局变量(它将成为全局对象的属性)。

+0

即使未声明的变量在子函数中,它变成了全局对象,我的理解是否正确? – Sarav

+0

会提出一个简单的演示 – Iceman

+0

只是将其标记为一个愚蠢的,没有必要一遍又一遍地回答这个问题... http://stackoverflow.com/questions/1470488/what-is-the-purpose-of- -Val-keyword-and-when-use-it-or-omit-it – JordanHendrix