2010-12-19 74 views
0
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 || {}; 

我見過很多代碼。

+0

原始問題詢問「o = 0 || {}」,這實際上並不是代碼片段中的內容,而且它確實沒有任何意義。它應該是「o = o || {}」。 – Pointy 2010-12-19 17:16:01

+0

@Pointy:我認爲這是一個錯字。 – 2010-12-19 17:16:46

+0

是的,我同意 - 我想過編輯它,但決定留下一個明確的說明。 – Pointy 2010-12-19 17:18:02

回答

2

您將創建你的對象

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是沒有定義,一個空的對象文本的鏈接。它基本上初始化變量,如果它是'虛假'。這是一種防止空對象問題的技術。

4

表達

o = o || {}; 

裝置

解釋變量 「○」 作爲一個布爾值。如果該值爲「真」,則將「o」設置爲其當前值。如果「false」,則設置「o」來引用新的對象實例。

重點是確保「o」不爲空,並且如果它是初始化它爲一個新的對象實例。

至於調用該函數,你需要使用「對象常量」符號:

foo({ key1: value, key2: value, ... }); 

編輯 —在評論指出,「O」的價值解釋因爲布爾值是一個非常有趣的主題。在這種特殊情況下,意圖將檢查「o」是否爲空。有「o」的值可以評估爲false,但其中可能在這裏需要區別對待,但顯然在問題中沒有足夠的上下文來了解。

+0

不完全正確或錯誤。 JavaScript變量可能是真實的或者是錯誤的,它們的真實性或者錯誤性決定了結果的評估方式。 'false','undefined','null','0','''(空字符串)'和'NaN'的值是虛假的,這意味着表達式'o = o ||' {};'如果'o'是虛假的,則評估爲'o = {};' – 2010-12-19 17:22:48

+0

是的,我知道這一切。請注意,我說,「將變量」o「的值解釋爲布爾值。」 「解釋」這個詞是爲了封裝你寫的:-) – Pointy 2010-12-19 17:24:20

相關問題