Javascript - Vars,函数和对象

时间:2015-10-03 21:13:49

标签: javascript function object var

我是从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的全局变量,如果它已经存在,则更改它的值,如果不存在则在函数中本地创建它。那是对的吗?

  1. 一般来说,我什么时候需要申报var,什么时候不申报?
  2. 感谢您的时间。

2 个答案:

答案 0 :(得分:4)

  1. 因为变量和属性是不同的东西。

    声明变量时,请使用var。在对象文字中设置属性时,请不要。

  2. 您不必在非严格模式下使用var,但不建议这样做,因为变量将变为全局变量。而不是在严格模式下使用var抛出。

  3. 当您为变量设置一些值时,会在范围链中搜索并在那里进行修改。如果在任何地方都找不到变量,则在严格模式下会出错,或者在非严格模式下将其指定为全局对象的属性。

  4. 始终在某处声明您的变量。最好是尽可能在当地。

答案 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 

我希望这会有所帮助