////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