看來這兩個表達式產生相同的結果。他們之間有什麼區別嗎?JavaScript中的(cond && value || default_value)和(cond?value:default_value)之間是否有區別?
回答
如果您cond
條件truthy,但你的value
不,第一個表達式將前往default_value
,而你的第二個表達式會盡快給value
爲cond
是truthy,不管實際的value
。
實施例:
var cond = true,
value = false,
default_value = "whatever";
cond && value || default_value; // gives "whatever"
cond ? value : default_value; // gives `false`
value = "truthy";
cond && value || default_value; // gives "truthy"
cond ? value : default_value; // gives "truthy"
value = null; // or `undefined`, or "" (empty string), or any falsy value.
cond && value || default_value; // gives "whatever"
cond ? value : default_value; // gives `null` (or `undefined`, or "")
// or whatever is in `value`
其實你是對的,只有當「value」是false時,它纔會有所不同。在我的條件中,「value」是一個String,一個對象或null.So除了你提到的,這兩個表達式是完全相等的? –
請在'(cond && value)'處刪除'(...)'。他們沒有必要。 –
@VincentChen我更新了代碼以顯示更多情況,並添加了一個現場演示。兩個表達式之間的唯一區別是'value'是[falsy](https://developer.mozilla.org/en-US/docs/Glossary/Falsy),其中值包括'「」(空字符串)。 – ghybs
- 1. mini-kanren cond-a cond-u和cond-e的區別是什麼?
- 2. Cond和Case有何區別?
- 3. if和cond的區別?
- 4. count(*)其中cond = val或count(cond = val)
- 5. Option(value)和Some(value)之間的區別
- 6. .Value =「」和.ClearContents之間有什麼區別?
- 7. Scheme:About cond
- 8. let cond
- 9. variant()和variant之間是否有區別?
- 10. 的MongoDB $ COND
- 11. QString&和QString之間是否有區別?
- 12. ** copy **和** addAll **之間是否有區別?
- 13. angular.isUndefined(value)和not!(value)之間的區別是什麼?
- 14. String(value)和value之間的區別是什麼?
- 15. ui:fragment和s:fragment之間是否有區別?
- 16. replica和replica之間是否有區別
- 17. _function和function之間是否有區別?
- 18. $(e.currentTarget)和$(this)之間是否有區別?
- 19. `ListView.invalidateViews()`和'Adapter.notifyDataSetChanged()'之間是否有區別?
- 20. default-initialize和value-initialize之間的區別?
- 21. Element.value和Element.getAttribute(「value」)之間的區別
- 22. cond->具有多個值
- 23. if(!cond(it.next()))代表`cond`是什麼意思?
- 24. Session.Add(「key」,value)和Session [「key」] = value之間有什麼區別?
- 25. SUM(IF(COND,EXPR,NULL))和IF(COND,SUM(EXPR),NULL)
- 26. 方案COND
- 27. MongoDB $ cond問題
- 28. Clojure-New Cond Macro?
- 29. 使用COND
- 30. 重寫COND
FWIW第二運營商被稱爲三元。 –
@ cricket_007-ECMA-262稱它爲[*條件運算符*](http://www.ecma-international.org/ecma-262/6.0/index.html#sec-conditional-operator),它是** a **三元操作符。 ;-) – RobG
似乎三元操作的條件是不完整的。對於2個表達式的公平比較,第二個表達式應該是'cond && value?value:default_value' –