2016-10-22 110 views
0

我有一個名爲isApp的變量。將false轉換爲undefined(JavaScript)

如果isApp是真的,我希望做到以下幾點:

login({os:"ios"}) 

如果isApp是假的,我要打電話:

login() 

我怎樣才能做到這一點在JavaScript中的一個襯墊?

login(isApp&&{os:"ios"}) 

不正確,因爲如果isApp爲false,它將使用false調用登錄。我想用undefined調用它。

UPDATE

我有其他的參數要登錄,所以我不希望寫登錄兩次。

例如:

login({tokenId:200}, {os:"ios"}) 
因此

我不喜歡這樣的解決方案:

isApp:login({tokenId:200}, {os:"ios"})?login({tokenId:200}); 

回答

2

可以使用條件運算符傳undefined

login({tokenId:200}, isApp ? {os:"ios"} : undefined); 

如果你傳遞事項參數的,你需要要麼撥打login兩個分支機構,要麼使用apply

var args = [{tokenId:200}]; 
if (isApp) { 
    args.push({os:"ios"}); 
} 
login.apply(null, args); 
2

您可以使用Conditional (ternary) Operator通過基於布爾isApp的參數,比你可以添加其他你的參數:

login(isApp ? {os: "ios"} : undefined); 
+0

我有其他的參數去登錄,所以我不想寫兩次登錄。 – Baz

3

login(isApp ? { os: "ios"} : undefined);

0

您可以使用條件運算符

isApp ? login({os:"ios"}): login(); 
+0

我有其他參數要登錄,所以我不想寫兩次登錄。 – Baz

+0

這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 - [來自評論](/ review/low-quality-posts/14063116) –

+0

@rajeshujade這是他的問題的答案。後來他編輯了他的問題。你可以在問題中看到編輯。 –

0

isApp = ![];//false 
 
login({token:{id:200}} , !isApp ? [][[]] /*-->undefined*/ : {os:"ios"});

+0

''[] [[]]'結構的意義何在,而不是簡單地輸入文字'undefined'? – JHH

1

我建議以下簡約風格:

login(isApp && {os: "ios"} || undefined, secondParam); 

,它基本上是相同的三元運算符,但具有不同的味道:)