Javascript-变量、函数和对象

Javascript-变量、函数和对象,javascript,function,object,var,Javascript,Function,Object,Var,我是从AS3到HTML5的javascript,所以这有点让人困惑: 一, 我注意到在对象内部,您不需要声明变量: var player = { type:'player', x:50, } var(var类型,var x)显示错误也是一样,为什么会这样 二,。为什么我不需要在函数中声明变量: createPlayer = function(){ a = 5; console.log(a); //works } 三,。 我假设在一个函数中,一旦创建了一个新的变量,如下所示: var a;

我是从AS3到HTML5的javascript,所以这有点让人困惑:

一,

我注意到在对象内部,您不需要声明变量:

var player = { 
type:'player',
x:50,
}
var(var类型,var x)显示错误也是一样,为什么会这样

二,。为什么我不需要在函数中声明变量:

createPlayer = function(){
a = 5;
console.log(a); //works
}
三,。 我假设在一个函数中,一旦创建了一个新的变量,如下所示:

 var a; //global var
 createPlayer = function(){
 a = 3;
 }
它首先搜索是否存在一个名为a的全局变量,如果它已经存在,它会更改它的值,如果不存在,它会在函数中本地创建它。对吗

  • 通常,何时需要声明var,何时不需要
  • 谢谢你抽出时间

  • 因为变量和属性是不同的东西

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

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

  • 当您为变量设置某个值时,将在范围链中搜索该变量,并在其中进行修改。如果在任何地方都找不到该变量,则在严格模式下为错误,或在非严格模式下指定为全局对象的属性

  • 始终在某个地方声明变量。最好是尽可能在当地进行


  • 如果在函数中使用关键字
    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 
    

    我希望这有助于

    不要在未使用
    var
    声明变量的情况下分配变量,这样您就永远不会对它的定义范围感到困惑。如果不使用
    var
    声明变量,它将成为一个全局变量,这被认为是一种非常糟糕的做法,事实上,在严格模式下实际上是一个错误。重复?谢谢,确实有帮助。如果有帮助,请竖起大拇指:)