我是从AS3转到HTML5 javascript所以这有点令人困惑:
1
我注意到在对象内部,你不需要声明变量:
var player = {
type:'player',
x:50,
}
vars(var type,var x)同样显示错误,为什么会这样?
2。为什么我不需要在函数中声明var:
createPlayer = function(){
a = 5;
console.log(a); //works
}
3。 我假设在函数内部,一旦你创建了一个像这样的新var:
var a; //global var
createPlayer = function(){
a = 3;
}
它首先搜索是否存在名为a的全局变量,如果它已经存在,则更改它的值,如果不存在则在函数中本地创建它。那是对的吗?
感谢您的时间。
答案 0 :(得分:4)
因为变量和属性是不同的东西。
声明变量时,请使用var
。在对象文字中设置属性时,请不要。
您不必在非严格模式下使用var
,但不建议这样做,因为变量将变为全局变量。而不是在严格模式下使用var
抛出。
当您为变量设置一些值时,会在范围链中搜索并在那里进行修改。如果在任何地方都找不到变量,则在严格模式下会出错,或者在非严格模式下将其指定为全局对象的属性。
始终在某处声明您的变量。最好是尽可能在当地。
答案 1 :(得分:0)
如果您在函数中使用关键字var
,则将其视为局部变量,否则将其视为附加到窗口的全局变量对象,让我给你举个例子
function test(){
var attr1 = "first attribute"; // this is a local variable
attr2 = "second attribute"; // this is a global variable, so you can acess it from outside that function, once you call it
}
// call the test function
test();
console.log(attr1); // we get undefined because we used the keyword var
console.log(attr2); // we get the valeu "second attribute" because it is considered as a global variable
我希望这会有所帮助