function foo(o){
o=o || {};
}
foo(one:1); // ???
alert(foo(one); // ???
foo(one:1,two:2,three:3) // ???
alert(foo(one,two,three)); // ???
這段JavaScript究竟做了什麼?我想將JavaScript對象作爲參數傳遞
o = o || {};
我見過很多代碼。
function foo(o){
o=o || {};
}
foo(one:1); // ???
alert(foo(one); // ???
foo(one:1,two:2,three:3) // ???
alert(foo(one,two,three)); // ???
這段JavaScript究竟做了什麼?我想將JavaScript對象作爲參數傳遞
o = o || {};
我見過很多代碼。
您將創建你的對象
var arg = {key: val};
然後
var result = foo(arg);
你傳遞一個參數到函數的對象。如果你的函數可以接受一個以上的阿根廷,當你定義的函數,你會
var theFunction = function(arg1, arg2, arg3) {
// arg1, arg2, and arg3 are all references in this function
}
這樣ARG1,ARG2,並ARG3被定義爲參數。 JavaScript有一定的靈活性,可以根據需要傳遞儘可能多的參數;用明確的參數定義函數是很好的設計,所以API很清晰。然而,有些情況下你只是不知道,所以在Javascript中,你可以得到所有通過'arguments'變量傳入的參數。 Javascript使這個變量在所有函數中都可用。但你應該很少使用它。下面是實施例
http://www.seifi.org/javascript/javascript-arguments.html
的
o = o || {};
設置變量的 'o' 是O,或如果o是沒有定義,一個空的對象文本的鏈接。它基本上初始化變量,如果它是'虛假'。這是一種防止空對象問題的技術。
表達
o = o || {};
裝置
解釋變量 「○」 作爲一個布爾值。如果該值爲「真」,則將「o」設置爲其當前值。如果「false」,則設置「o」來引用新的對象實例。
重點是確保「o」不爲空,並且如果它是初始化它爲一個新的對象實例。
至於調用該函數,你需要使用「對象常量」符號:
foo({ key1: value, key2: value, ... });
編輯 —在評論指出,「O」的價值解釋因爲布爾值是一個非常有趣的主題。在這種特殊情況下,意圖將檢查「o」是否爲空。有「o」的值可以評估爲false
,但其中可能在這裏需要區別對待,但顯然在問題中沒有足夠的上下文來了解。
不完全正確或錯誤。 JavaScript變量可能是真實的或者是錯誤的,它們的真實性或者錯誤性決定了結果的評估方式。 'false','undefined','null','0','''(空字符串)'和'NaN'的值是虛假的,這意味着表達式'o = o ||' {};'如果'o'是虛假的,則評估爲'o = {};' – 2010-12-19 17:22:48
是的,我知道這一切。請注意,我說,「將變量」o「的值解釋爲布爾值。」 「解釋」這個詞是爲了封裝你寫的:-) – Pointy 2010-12-19 17:24:20
原始問題詢問「o = 0 || {}」,這實際上並不是代碼片段中的內容,而且它確實沒有任何意義。它應該是「o = o || {}」。 – Pointy 2010-12-19 17:16:01
@Pointy:我認爲這是一個錯字。 – 2010-12-19 17:16:46
是的,我同意 - 我想過編輯它,但決定留下一個明確的說明。 – Pointy 2010-12-19 17:18:02