Javascript 判断条件如果是 false 怎么让他什么都不做呢? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sudoy
V2EX    问与答

Javascript 判断条件如果是 false 怎么让他什么都不做呢?

  •  
  •   sudoy 2021-01-13 10:36:18 +08:00 4096 次点击
    这是一个创建于 1780 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Javascript 的条件判断表达式里面,如果条件为假的时候,如何让它什么都不做呢?我试了以下,如果 : 后面什么都不写,浏览器会报错说 Uncaught SyntaxError: Unexpected token ';'

    比如下面,如果 把 'World' 去掉,则会报错:

    <!DOCTYPE html> <html> <body> <div id="demo"></div> <script> let a = 10; demo = document.getElementById('demo'); demo.innerText = a > 5 ? 'Hello' : 'World'; </script> </body> </html> 

    也就是说下面的代码会报错。

    <!DOCTYPE html> <html> <body> <div id="demo"></div> <script> let a = 10; demo = document.getElementById('demo'); demo.innerText = a > 5 ? 'Hello' : ; </script> </body> </html> 
    45 条回复    2021-01-15 10:48:36 +08:00
    cocoCookie
        1
    cocoCookie  
       2021-01-13 10:39:59 +08:00
    简单写个 if ?
    wangxiang
        2
    wangxiang  
       2021-01-13 10:41:23 +08:00   1
    demo.innerText = a > 5 ? 'Hello' : '';
    lemonnTr
        3
    lemonnTr  
       2021-01-13 10:41:54 +08:00   2
    a > 5 ? demo.innerText = 'Hello' : '' ;
    Sapp
        4
    Sapp  
       2021-01-13 10:43:17 +08:00
    @wangxiang 这样是有 bug 的,他的 demo 没有内容不代表实际就没有内容。
    demo.innerText = a > 5 ? 'Hello' : demo.innerText;

    不过这个需求用 if 不就行了么
    BreadKiller
        5
    BreadKiller  
       2021-01-13 10:43:32 +08:00   4
    a > 5 && demo.innerText = 'Hello'
    jappp
        6
    jappp  
       2021-01-13 10:43:50 +08:00
    你既然不需要 false 的时候做处理,为什么要用三元表达式呢?
    sudoy
        7
    sudoy  
    OP
       2021-01-13 10:44:21 +08:00
    @cocoCookie 在实际操作中判断比较多,感觉用 if 比较麻烦
    BreadKiller
        8
    BreadKiller  
       2021-01-13 10:44:54 +08:00   1
    a > 5 && (demo.innerText = 'Hello')
    好像得加个括号
    tabris17
        9
    tabris17  
       2021-01-13 10:46:03 +08:00   1
    a > 5 && (demo.innerText='Hello');
    Hypn0s
        10
    Hypn0s  
       2021-01-13 10:46:57 +08:00
    1==1 ? void 0 : alert(1);
    ansenJ
        11
    ansenJ  
       2021-01-13 10:48:08 +08:00   1
    &&
    sudoy
        12
    sudoy  
    OP
       2021-01-13 10:48:12 +08:00
    @jappp 嫌二元表达式 if 太麻烦,要写好多大括号 {}
    sudoy
        13
    sudoy  
    OP
       2021-01-13 10:50:13 +08:00
    感谢大家回复,看来用 && 比较合适
    shyrock
        14
    shyrock  
       2021-01-13 10:50:49 +08:00
    @jappp #6 灵魂拷问
    cocoCookie
        15
    cocoCookie  
       2021-01-13 10:50:53 +08:00
    @sudoy 只是看起来
    cmdOptionKana
        16
    cmdOptionKana  
       2021-01-13 10:51:54 +08:00   1
    @sudoy if 不用大括号的,很方便 if (a>5) demo.innerText = 'Hello' 即可。
    sudoy
        17
    sudoy  
    OP
       2021-01-13 10:57:26 +08:00
    loading
        18
    loading  
       2021-01-13 11:01:04 +08:00 via Android
    if 通俗易懂,用&&有时我自己回过来都看不懂,
    loading
        19
    loading  
       2021-01-13 11:02:26 +08:00 via Android   2
    @cmdOptionKana 不用大括号我脑子都转不过来,高级语言是给人看的,为了格式化后能在一行,得不偿失。
    dark3212
        20
    dark3212  
       2021-01-13 11:03:04 +08:00   1
    demo.innerText = a > 5 ? 'Hello' : demo.innerText ;
    exceloo
        21
    exceloo  
       2021-01-13 11:15:11 +08:00
    如果你非要用三元,hmmm
    demo.innerText = a > 5 ? 'Hello' : demo.innerText;
    answeryou
        22
    answeryou  
       2021-01-13 11:34:40 +08:00
    ```js
    let a = 10;
    if a<=5 return;
    demo = document.getElementById('demo');
    demo.innerText = 'Hello';
    ```
    Marstin
        23
    Marstin  
       2021-01-13 12:10:58 +08:00   1
    a>5&&(demo.innerTex = 'hello')
    ershierdu
        24
    ershierdu  
       2021-01-13 12:20:01 +08:00 via iPhone
    感觉这个就是很典型的 if 逻辑,非要用其他方法很容易降低可读性…
    reus
        25
    reus  
       2021-01-13 12:26:39 +08:00
    不用 if ?小心以后维护的人亲切祝福你
    zqx
        26
    zqx  
       2021-01-13 12:36:28 +08:00 via Android
    貌似很少有人在 js 中用 void
    itechify
        27
    itechify  
    PRO
       2021-01-13 12:57:52 +08:00 via Android
    demo.innerText = a > 5 ? 'Hello' : demo.innerText;
    liuzhaowei55
       28
    liuzhaowei55  
       2021-01-13 13:09:23 +08:00 via iPhone
    @lemonnTr 楼主看三楼的写法,虽然写法很骚,但项目中很多地方都是这么用的。
    AllenHua
        29
    AllenHua  
       2021-01-13 13:26:37 +08:00   1
    a > 5 && demo.innerText='Hello'
    niub
        30
    niub  
       2021-01-13 13:30:58 +08:00
    你这是三元表达式语法都不清楚鸭
    lifesimple
        31
    lifesimple  
       2021-01-13 14:04:47 +08:00
    a > 5 ? demo.innerText = 'Hello' : ''; 当做 if 来用?
    shakaraka
        32
    shakaraka  
    PRO
       2021-01-13 14:14:15 +08:00
    有意义么。。。没 false 操作的时候要哪个 if 不就好了,不要为了用而用,看场景
    msg7086
        33
    msg7086  
       2021-01-13 14:23:28 +08:00   1
    if 或者 and 都行。and/or 是有英文语义的(然后 /否则),对英语用户来说理解不成问题。
    比如 a > 5 && (demo.innerText = 'Hello') || (window.alert()) 。
    但是一般来说除非是特别适合这种英文语义的语句,否则建议一律写成 if 。
    read() or die() 这种就比 if(!read()) die() 要易读一些。
    cigarzh
        34
    cigarzh  
       2021-01-13 14:50:40 +08:00   1
    大脑升级

    屎山就是这么造出来的
    oamu
        35
    oamu  
       2021-01-13 14:58:58 +08:00
    @sudoy 别听他的 @cmdOptionKana,if 后面加大括号是个好习惯。
    nbin2008
        36
    nbin2008  
       2021-01-13 15:26:52 +08:00
    报错是因为语法不对呀
    yaphets666
        37
    yaphets666  
       2021-01-13 15:31:20 +08:00
    空字符串啊...

    而且三元表达式 和 if 括号中的 true false 判断 在某些情况下是不一致的
    我也记不清了
    liantao
        38
    liantao  
       2021-01-13 16:18:14 +08:00
    demo.innerText = a > 5 ? 'Hello' :console.log("test") ;
    GG668v26Fd55CP5W
        39
    GG668v26Fd55CP5W  
       2021-01-13 16:20:26 +08:00 via iPhone   1
    这个帖子让我感觉智商受到了伤害
    iapix
        40
    iapix  
       2021-01-13 16:51:15 +08:00 via Android
    johnnyNg
        41
    johnnyNg  
       2021-01-13 16:58:34 +08:00
    ```Javascript
    a > 5 && devPayModeDetailUrl.innertext = "hello"
    ```
    zlu1123
        42
    zlu1123  
       2021-01-13 16:58:42 +08:00
    demo.innerText = a > 5 ? 'Hello' : null
    qzhai
        43
    qzhai  
       2021-01-13 18:15:03 +08:00
    既然 a 要 let 为啥 demo 不呢,其次建议用 const
    muzuiget
        44
    muzuiget  
       2021-01-13 21:47:10 +08:00   1
    三元表达式不等于 if,这种情况就应该用 if 。
    sudoy
        45
    sudoy  
    OP
       2021-01-15 10:48:36 +08:00
    @qzhai 忘了哈哈,平时主要写 python,偶尔写 Javascript,老忘记 var,let,const
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4473 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 42ms UTC 09:57 PVG 17:57 LAX 01:57 JFK 04:57
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86