////Creating Object
var Obj;
// init Object
Obj= {};
- 什么是这些 两者之间的区别?
- 是否有可能使它成为 单行?
- 像这样使用任何优点?
////Creating Object
var Obj;
// init Object
Obj= {};
所述第一声明变量在当前作用域中,它不会为其分配任何值,因此它不会创建任何对象,而第二个创建的空对象文字可以通过全局变量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
如果这就是你所得到的代码,也绝对这之间没有什么区别:和
var Obj;
Obj = {};
这样的:
var Obj = {};
,如果这就是你所得到的代码,在修改Obj
变量之间没有任何内容。事实上,我认为做这件事的第二种方式会比上面两行更快。
也许我没有完全理解你的问题,但是...
var Obj= {};
是完全的罚款。
第一个为变量Obj
分配插槽,但将其保留为未定义。第二个将新创建的对象绑定到名称Obj
。
您可以在一行内完成:var Obj = {};
。分两步做并没有真正的好处,只有风险。
更新了代码...现在检查 – theJava 2011-04-08 14:25:56
var Obj;
这不是创建对象。它定义了一个变量;
对象首先被创建并且被初始化,所以这是两个关键的过程,它们都需要有一个对象。
var Obj;
被不创建一个对象,它是声明的可变Obj
。
Obj = {};
是初始化可变Obj
一个空对象。
当然,你可以一气呵成结合起来,并做到这一点:
var Obj = {};
你基本上只需要单独的声明和初始化,如果要初始化与不同的值变量,基于某种条件或如果变量应该在另一个范围内声明。例如:
var Obj;
if(something) {
Obj = 'me';
else {
Obj = 'you';
}
更新了代码...现在检查 – theJava 2011-04-08 14:24:13
@theJava:仍然一样,只是名称改变了;) – 2011-04-08 14:25:06
此行实际上并不创建对象。相反,它会创建一个变量(或者一个可以容纳一个对象的地方,如果你把它放在那里的话)。
var Obj;
此行确实创建了一个对象并将其放入变量中。
Obj = {};
此行通过创建属性并将其设置为某个对象来“初始化”对象。
Obj.Something = null;
注意,说
无功的OBJ;
你是不是创建对象,仅仅定义(在本地函数范围)变量最初设置为null
除此之外,有没有区别,你是否将其合并为一个语句或不。
实际上,值不是'null',而是'undefined'。 – 2011-04-08 14:30:08
var Obj;
确实不是创建一个对象,它声明一个变量。
Obj = {};
将一个空对象分配给名为Obj
的变量。如果以前未声明Obj
,则由于缺少var
关键字(不这样做),因此这会隐式地在全局范围内声明该变量。
var Obj;
仅声明的Obj
变量,而
var Obj = {};
声明和初始化Obj
变量作为一个空对象。
请确保您也了解在这里使用var
关键字。它可以用于声明和/或初始化变量。
Obj = {};
和
var Obj = {};
之间的区别是,var
稀少代码在全局命名空间(通常被认为是一种不好的做法)初始化Obj
。
TL; DR:在大多数情况下,最好是初始化,并在在局部范围内,同时声明,使用var
关键字:
var Obj = {};
对我来说太快了! :) – 2011-04-08 14:23:32
更新了代码...现在检查 – theJava 2011-04-08 14:24:53
我在那里看到它。是的,你完全可以将它们组合成一条线,我建议这样做。 – Groovetrain 2011-04-08 14:26:02