2014-07-06 37 views
0

我認爲這只是一個初學者的問題:如何解決函數中的特定參數並忽略其他參數?Javascript:僅在函數中使用特定參數

例子:

http://jsfiddle.net/8QuWj/

function test(para_1, para_2, para_3) { 
    if (para_3 == true) { 
    alert('only the third parameter was successfully set!'); 
    } 
} 

test(para_3=true); 

我要單獨決定我是否不使用特定參數的函數或沒有。

+0

傳遞一個哈希映射功能 –

回答

2

您可以檢查每個參數單獨使用if(param),如:

function test(para_1, para_2, para_3) { 
    if (para_1) { 
     // First parameter set 
    } 
    if (para_2) { 
     // Second parameter set 
    } 
    if (para_3) { 
     // Third parameter set 
    } 
} 

一般來說,你不能只設定一個參數,並希望它是第三,因爲它會自動設置它到第一個,其餘2個爲undefined。所以,如果你想打電話給你的功能和只擁有第三套,則很可能會做一個

test(null, null, 'this_is_set'); 
1

JavaScript中不可能傳遞命名參數。您可以做的最好的做法是接受一個對象作爲單個參數,然後從那裏決定要設置哪些屬性。

function test(obj) { 
    if (obj.para_3 == true) { 
    alert('only the third parameter was successfully set!'); 
    } 
} 

test({para_3:true}); 
+0

這是不正確;你可以斷言參數不等於undefined。 –

+0

@ JimmyBreck-McKye哪部分不正確?我認爲這個答案是最適合OP要找的。 – Segfault

+0

@Segfault - OP想要確定參數'para3'是否通過。 Scimonster說這是不可能的,但它*是* - 你可以檢查para3 === undefined。雖然地圖參數方法對於多個可選參數更靈活並且更易讀,但正如答案所暗示的那樣,它不是語言提供的唯一選項。 –

0

您也可以將存儲在陣列參數。參數數組的參數將被映射到函數的參數。

var arg = []; 
arg[2] = true; 
test.apply(this, arg); 

的另一種方式是剛纔設置的其他PARAMS未定義:

test(undefined, undefined, true); 

http://jsfiddle.net/8QuWj/2/