这样直接写三元运算,符合 js 规范吗?

2019 年 4 月 4 日
 liudaqi

直接用 true 或 false 代替 condition 表达式:

<script>
    var result = "YesOrNo";
    result = true ? alert('Yes') : alert ('No');
</script>
5797 次点击
所在节点    JavaScript
18 条回复
Justin13
2019 年 4 月 4 日
能跑,不推荐。
passion336699
2019 年 4 月 4 日
再简化点... 还可以

result ? funcA() : funcB()

可能回头看代码有点懵
Vegetable
2019 年 4 月 4 日
我觉得不符合
if (true){}else{do sth}
这样的代码会出发 tslint 的 ts7027 Unreachable 无法到达的代码.
三元运算里倒是没提示,但是道理都是一样的嘛
gaoryrt
2019 年 4 月 4 日
condition 表达式最终的结果不就是个 boolean 么。。。
attackonFourier
2019 年 4 月 4 日
三目运算是函数式推荐的 运算产生结果 结果用于进一步运算 alert 的话没有返回值 所以说不推荐
SingeeKing
2019 年 4 月 4 日
你的 result 是赋值啊……

而且无论 result 是 "yes" 还是 "no" 它和 true 比较都是真
Hoshinokozo
2019 年 4 月 4 日
我反倒觉得这种写法非常的简洁明了,比 if-else 更加直观,前提是你得对三元运算符很熟,不然看起来会有点懵
whypool
2019 年 4 月 4 日
没毛病
jecshcier
2019 年 4 月 4 日
一直都这么写。。
deepdark
2019 年 4 月 4 日
三元真的方便,但我主要做一些文字显示上的转换
shintendo
2019 年 4 月 4 日
@SingeeKing
先算三元后赋值……
1KN6sAqR0a57no6s
2019 年 4 月 4 日
楼主的重点是直接写 true 有没有毛病。虽然这样写没报错,但是想不到应用场景。while(true)至少有时还有点用。
SingeeKing
2019 年 4 月 4 日
@shintendo #11 我还是觉得是他想做判断,不然 alert 返回 undefined、true 恒成立……
marsgt
2019 年 4 月 4 日
能跑,但不推荐。

另外建议,一是 js 虽然是弱类型系统,但不要把弱类型当做特性来用,平时能统一类型还是尽量统一(能学一门后端语言是最好的);二是`alert()`容易失控,用的时候尽量单独用;三是像这种选择语句(算是变种吧),如果需要直接写`TRUE`的话,说明是选择条件短路,那么一般还会有更简写的形式(或者说这样用条件选择语句没有意义,就像`if(TRUE)`,可以,但没必要)
laqow
2019 年 4 月 4 日
这是 php 留下来的习惯吧
molvqingtai
2019 年 4 月 4 日
你这又是赋值又是 alert,应该被打死
xg4
2019 年 4 月 4 日
result = alert('Yes'); 和 result = true ? alert('Yes') : alert ('No'); 不是一样的吗?
nanxiaobei
2019 年 4 月 5 日
遇到函数调用,最好用 if else

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/552111

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX