看来这两个表达式产生相同的结果。他们之间有什么区别吗?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' –