
再看公司项目代码的时候看到有这句话,据我的理解大概是类似三元运算符的功能
求教一下大家,这是怎么回事呢
1 sea516 2018-03-21 15:38:58 +08:00 不是三元啊,不是有括号吗 |
2 imherer 2018-03-21 15:39:11 +08:00 d 的值是什么类型? Boolean 吧? 当 || 前面为 true 的时候 a=true,否则 a=b |
3 jmc891205 2018-03-21 15:39:50 +08:00 自己画个真值表理解理解 |
4 Phariel 2018-03-21 15:45:47 +08:00 via Android 如果 b 和 c 均为真值(不是 0 或者 false 或者 null 或者 undefined 或者空字符串) 把 c 赋给 a 否则把 d 赋给 a |
5 coolzjy 2018-03-21 15:45:50 +08:00 一般习惯写成 `foo = (bar && bar.baz) || []` 其实相当于 `foo = bar && bar.baz` 的升级版 总有一个 `[]` 来兜底,也就是 `bar` 活着 `bar.baz` 任意一个为 falsy 则使用缺省值 |
7 shenjo 2018-03-21 15:51:29 +08:00 如果(b&&c) 是 false:a =d; 如果( b&&c )是 true : a=c |