sudoy
V2EX  ›  问与答

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

  •  
  •   sudoy · Jan 13, 2021 · 4956 views
    This topic created in 2131 days ago, the information mentioned may be changed or developed.

    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 replies  •  2021-01-15 10:48:36 +08:00
    cocoCookie
    cocoCookie
    Jan 13, 2021
    1
    简单写个 if ?
    wangxiang
    wangxiang
    Jan 13, 2021❤️1
    2
    demo.innerText = a > 5 ? 'Hello' : '';
    lemonnTr
    lemonnTr
    Jan 13, 2021❤️2
    3
    a > 5 ? demo.innerText = 'Hello' : '' ;
    Sapp
    Sapp
    Jan 13, 2021
    4
    @wangxiang 这样是有 bug 的,他的 demo 没有内容不代表实际就没有内容。
    demo.innerText = a > 5 ? 'Hello' : demo.innerText;

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

    屎山就是这么造出来的
    oamu
    oamu
    Jan 13, 2021
    35
    @sudoy 别听他的 @cmdOptionKana,if 后面加大括号是个好习惯。
    nbin2008
    nbin2008
    Jan 13, 2021
    36
    报错是因为语法不对呀
    yaphets666
    yaphets666
    Jan 13, 2021
    37
    空字符串啊...

    而且三元表达式 和 if 括号中的 true false 判断 在某些情况下是不一致的
    我也记不清了
    liantao
    liantao
    Jan 13, 2021
    38
    demo.innerText = a > 5 ? 'Hello' :console.log("test") ;
    GG668v26Fd55CP5W
    GG668v26Fd55CP5W
    Jan 13, 2021 via iPhone❤️1
    39
    这个帖子让我感觉智商受到了伤害
    iapix
    iapix
    Jan 13, 2021 via Android
    40
    johnnyNg
    johnnyNg
    Jan 13, 2021
    41
    ```javascript
    a > 5 && devPayModeDetailUrl.innertext = "hello"
    ```
    zlu1123
    zlu1123
    Jan 13, 2021
    42
    demo.innerText = a > 5 ? 'Hello' : null
    qzhai
    qzhai
    Jan 13, 2021
    43
    既然 a 要 let 为啥 demo 不呢,其次建议用 const
    muzuiget
    muzuiget
    Jan 13, 2021❤️1
    44
    三元表达式不等于 if,这种情况就应该用 if 。
    sudoy
    sudoy
    OP
    Jan 15, 2021
    45
    @qzhai 忘了哈哈,平时主要写 python,偶尔写 JavaScript,老忘记 var,let,const
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1900 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 96ms · UTC 00:17 · PVG 08:17 · LAX 16:17 · JFK 19:17
    ♥ Do have faith in what you're doing.