首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
V2EX  ›  JavaScript

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

  •  
  •   liudaqi · 196 天前 · 2113 次点击
    这是一个创建于 196 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    <script>
        var result = "YesOrNo";
        result = true ? alert('Yes') : alert ('No');
    </script>
    
    18 回复  |  直到 2019-04-05 03:14:42 +08:00
        1
    Justin13   196 天前 via Android
    能跑,不推荐。
        2
    passion336699   196 天前
    再简化点... 还可以

    result ? funcA() : funcB()

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

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

    另外建议,一是 js 虽然是弱类型系统,但不要把弱类型当做特性来用,平时能统一类型还是尽量统一(能学一门后端语言是最好的);二是`alert()`容易失控,用的时候尽量单独用;三是像这种选择语句(算是变种吧),如果需要直接写`TRUE`的话,说明是选择条件短路,那么一般还会有更简写的形式(或者说这样用条件选择语句没有意义,就像`if(TRUE)`,可以,但没必要)
        15
    laqow   196 天前 via Android
    这是 php 留下来的习惯吧
        16
    molvqingtai   196 天前 via Android
    你这又是赋值又是 alert,应该被打死
        17
    xg4   196 天前
    result = alert('Yes'); 和 result = true ? alert('Yes') : alert ('No'); 不是一样的吗?
        18
    nanxiaobei   195 天前
    遇到函数调用,最好用 if else
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2254 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 32ms · UTC 15:36 · PVG 23:36 · LAX 08:36 · JFK 11:36
    ♥ Do have faith in what you're doing.