我不知道這兩個是不同的嗎?速記if/else語句:foo?foo:bar vs foo ||吧
var hello = foo?foo:bar;
VS
var hello = foo || bar;
你能解釋一下嗎?和一些案例的例子?或兩者是相同的?
PS:富/酒吧應該是所有喜歡串/ INT/OBJ /布爾...
我不知道這兩個是不同的嗎?速記if/else語句:foo?foo:bar vs foo ||吧
var hello = foo?foo:bar;
VS
var hello = foo || bar;
你能解釋一下嗎?和一些案例的例子?或兩者是相同的?
PS:富/酒吧應該是所有喜歡串/ INT/OBJ /布爾...
的? :
稱爲條件運算它採用三個參數(這就是爲什麼它有時被稱爲「三元「運營商):測試的東西,如果測試是真的會返回的東西,如果測試是假的,則返回一些東西*
第二個是JavaScript的curiously-powerful logical OR operator。它接受兩個參數。它評估第一個操作數,如果這真的是真的,則返回它;如果第一個是僞造的,則它評估並返回第二個操作數。
因此,這兩者之間的差異是這樣的:對於條件運算符,foo
可能會被評估兩次(如果它是真的)。對於||
,foo
僅進行一次評估。這並不重要,如果foo
和bar
只是簡單的變量引用,但考慮:
var hello = foo() ? foo() : bar();
// vs
var hello = foo() || bar();
你可以看到它是如何重要多少倍foo()
進行評估,如果這樣做任何顯著的工作或有任何side effects。
(*那麼,什麼是 「truthy」 和 「falsey」 值嗎? 「falsey」 值0
,""
,NaN
,undefined
,null
,當然false
人,其他都是 「truthy」。)
很好的解釋!謝謝 – l2aelba
所有可能的,booleand .. string .. int .. obj .. @JonathonReinhart – l2aelba