2011-04-08 76 views
2
////Creating Object 
    var Obj; 

    // init Object 
    Obj= {}; 
  1. 什么是这些 两者之间的区别?
  2. 是否有可能使它成为 单行?
  3. 像这样使用任何优点?

回答

7

所述第一声明变量在当前作用域中,它不会为其分配任何值,因此它不会创建任何对象,而第二个创建的空对象文字可以通过全局变量Obj来引用。
有两个主要区别:范围变量和初始化与声明。
ex:

var Obj; 
alert(typeof Obj);//='undefined' 

//scoping : 
function foo(){ 
    obj1 = {}; 
    var obj2 = {}; 
} 
alert(typeof obj1);//='object' 
alert(typeof obj2);//='undefined' 
// obj2 is visible only in the foo function scope,while 
// obj1 is being attached to the global scope, the window object 
// you can access obj1 as window.obj1 too 
0

如果这就是你所得到的代码,也绝对这之间没有什么区别:和

var Obj; 
Obj = {}; 

这样的:

var Obj = {}; 

,如果这就是你所得到的代码,在修改Obj变量之间没有任何内容。事实上,我认为做这件事的第二种方式会比上面两行更快。

+0

对我来说太快了! :) – 2011-04-08 14:23:32

+0

更新了代码...现在检查 – theJava 2011-04-08 14:24:53

+0

我在那里看到它。是的,你完全可以将它们组合成一条线,我建议这样做。 – Groovetrain 2011-04-08 14:26:02

1

也许我没有完全理解你的问题,但是...

var Obj= {}; 

是完全的罚款。

1

第一个为变量Obj分配插槽,但将其保留为未定义。第二个将新创建的对象绑定到名称Obj

您可以在一行内完成:var Obj = {};。分两步做并没有真正的好处,只有风险。

+0

更新了代码...现在检查 – theJava 2011-04-08 14:25:56

1
var Obj; 

这不是创建对象。它定义了一个变量;

对象首先被创建并且被初始化,所以这是两个关键的过程,它们都需要有一个对象。

6

var Obj;创建一个对象,它是声明可变Obj

Obj = {};初始化可变Obj一个空对象。

当然,你可以一气呵成结合起来,并做到这一点:

var Obj = {}; 

你基本上只需要单独的声明和初始化,如果要初始化与不同的值变量,基于某种条件或如果变量应该在另一个范围内声明。例如:

var Obj; 

if(something) { 
    Obj = 'me'; 
else { 
    Obj = 'you'; 
} 
+0

更新了代码...现在检查 – theJava 2011-04-08 14:24:13

+0

@theJava:仍然一样,只是名称改变了;) – 2011-04-08 14:25:06

1

此行实际上并不创建对象。相反,它会创建一个变量(或者一个可以容纳一个对象的地方,如果你把它放在那里的话)。

var Obj; 

此行确实创建了一个对象并将其放入变量中。

Obj = {}; 

此行通过创建属性并将其设置为某个对象来“初始化”对象。

Obj.Something = null; 
1

注意,说

无功的OBJ;

你是不是创建对象,仅仅定义(在本地函数范围)变量最初设置为null

除此之外,有没有区别,你是否将其合并为一个语句或不。

+0

实际上,值不是'null',而是'undefined'。 – 2011-04-08 14:30:08

2

var Obj;确实不是创建一个对象,它声明一个变量。

Obj = {};将一个空对象分配给名为Obj的变量。如果以前未声明Obj,则由于缺少var关键字(不这样做),因此这会隐式地在全局范围内声明该变量。

2
var Obj; 

声明Obj变量,而

var Obj = {}; 

声明和初始化Obj变量作为一个空对象。

请确保您也了解在这里使用var关键字。它可以用于声明和/或初始化变量。

Obj = {}; 

var Obj = {}; 

之间的区别是,var稀少代码在全局命名空间(通常被认为是一种不好的做法)初始化Obj


TL; DR:在大多数情况下,最好是初始化,并在在局部范围内,同时声明,使用var关键字:

var Obj = {};