[英]Why do I need to use the “JavaScript key” when using parse on node.js?
[英]Do I need to use an “=” when using the ? : javascript shortcut?
有人可以告訴我這是否是有效的JavaScript來做到這一點:
if (wf.statusId == Status.Dirty) {
wf.createdDate
? promises.push(self.wordFormUpdateSubmit(wf, key))
: promises.push(self.wordFormAddSubmit(wf, key));
}
如果未定義createdDate,是否會有無法正常工作的情況?
這是替換的內容:
if (wf.statusId == Status.Dirty) {
if (wf.createdDate) {
var updatePromise = self.wordFormUpdateSubmit(wf, key);
promises.push(updatePromise);
} else {
var addPromise = self.wordFormAddSubmit(wf, key);
promises.push(addPromise);
}
}
也是一個相關的問題。 可以將相同的語法用於嗎? :是否需要if(){}構造?
除非將expr1
和expr2
返回某些內容並將其保存在其他變量中,否則不強制將=
與三元運算符一起使用。
在您的情況下,除非promises.push(self.wordFormAddSubmit(wf, key))
和promises.push(self.wordFormUpdateSubmit(wf, key))
返回要保存其變量的內容,否則不需要=
。
if (wf.statusId == Status.Dirty) {
promises.push(self[wf.createdDate ? 'wordFormUpdateSubmit' : 'wordFormAddSubmit'](wf, key));
}
wf.createdDate僅在未定義或沒有值的情況下才為true。 所以這應該工作正常。
if (wf.statusId == Status.Dirty) {
wf.createdDate
? promises.push(self.wordFormUpdateSubmit(wf, key))
: promises.push(self.wordFormAddSubmit(wf, key));
}
問候Mk
這是使用條件(三元)運算符的三元語句的示例,根據定義,該運算符將替換if...else
構造。
從MDN:
條件(三元)運算符是唯一采用三個操作數的JavaScript運算符。 該運算符通常用作if語句的快捷方式。
[ 來源 ]
您的兩個代碼示例都將以相同的方式工作,即,如果未定義createdDate
,則將運行三元語句的第二個表達式( :
之后的行),就像if...else
構造的else塊將運行一樣。
標題問題似乎無關緊要,因為如果您要保存對某些內容的引用,則只需要使用=
。 在這種情況下,您似乎沒有這樣做。
關於您的后續問題,很多人使用三元語句來執行適合一行或幾行的小額檢查和任務(我個人不是因為我更喜歡if...else
的可讀性),但是適度的任何操作復雜的代碼會很快使您的代碼難以閱讀和理解。 但是是的,從技術上講,三元語句可以替換if...else
塊。
關於第二個問題:
假設您不需要將結果保存在變量中,則可以執行以下操作:
promises.push(wf.createdDate?
self.wordFormUpdateSubmit(wf, key) :
self.wordFormAddSubmit(wf, key);
);
甚至可以工作:
promises.push(
(wf.createdDate? self.wordFormUpdateSubmit:self.wordFormAddSubmit)(wf, key)
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.