我注意到在JavaScript中,在函数内部有时会创建一个变量,而不会在它之前提及var
。
例如:
function myfunction() {
x = 10;
var y = 10;
}
这两者有什么区别?
答案 0 :(得分:3)
function myact() {
x = 20;
var y = 10;
console.log(x);
console.log(y);
}
myact();
console.log(x);
//y not available here
var
用于声明。因此,在没有声明的情况下分配将简单地赋予它全局范围含义:它将首先搜索它是否在上面的任何作用域堆栈中可用,如果不是在全局作用域中隐式创建变量并分配。
用var声明的变量的范围是它的当前执行 context,可以是封闭函数,也可以是变量 在任何函数之外声明,全局。
为未声明的变量赋值会隐式将其创建为 全局变量(它成为全局对象的属性)时 分配已执行。