推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
Cielos

菜鸟发问!在 for 循环里写 (a == -1) && break; 会报错是咋回事?

  •  
  •   Cielos · Apr 30, 2020 · 4524 views
    This topic created in 2210 days ago, the information mentioned may be changed or developed.
    而我用 if (a == -1) break; 就一切正常,搞不懂

    请问各位大佬,错在哪里啊?
    22 replies    2020-05-02 12:22:13 +08:00
    sarvatathagata
        1
    sarvatathagata  
       Apr 30, 2020
    break 是一条语句,不能被转换成一个值。然而&&操作符的两侧必须是值
    kiracyan
        2
    kiracyan  
       Apr 30, 2020
    这编译报错吧
    phpfpm
        3
    phpfpm  
       Apr 30, 2020   ❤️ 4
    看了你的头像,我发出了沉思:可能你入错行了。。
    DL9412
        4
    DL9412  
       Apr 30, 2020
    个人理解,逻辑运算符两端都应该是一个值,或者能输出值的表达式。break,return,continue 都没法转换为值。
    你 Boolean(break)也会报一样的错误。

    看见一个类似的问题 http://stackmirror.caup.cn/page/rh50ycxwvuig
    liuxiaohua
        5
    liuxiaohua  
       Apr 30, 2020
    楼主这是哪门子的语法 第一次见
    kumasama
        6
    kumasama  
       Apr 30, 2020
    哪有这种语法,不加&&多简洁
    Cielos
        7
    Cielos  
    OP
       Apr 30, 2020
    纳鲁货多!谢谢二位大佬
    @DL9412
    @sarvatathagata
    hbolive
        8
    hbolive  
       Apr 30, 2020
    头像把我吸引进来的。。
    annielong
        9
    annielong  
       Apr 30, 2020
    老老实实按语法走不好吗、
    sneezry
        10
    sneezry  
       Apr 30, 2020 via iPhone   ❤️ 1
    是参考了 make && make install 么 (doge
    vicnicLight007
        11
    vicnicLight007  
       Apr 30, 2020
    请给我你头像的高清大图链接,谢谢
    krixaar
        12
    krixaar  
       Apr 30, 2020
    我大概明白了,因为 true && expr2 返回 expr2,所以楼主认为 true && break;返回 break;,然后 for 循环就被 break 了🤣
    break;是个 statement (语句)不是 expression (表达式),所以不能用在这里🤣

    参考: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Expressions_and_Operators
    Cielos
        13
    Cielos  
    OP
       Apr 30, 2020
    @annielong 李立超的 JS 教程里这样用过,我就拿来当 低配 if 用了
    LG3xFA6kpn88HxEW
        14
    LG3xFA6kpn88HxEW  
       Apr 30, 2020
    大大大(指代码
    doge
    fengtons
        15
    fengtons  
       Apr 30, 2020 via Android   ❤️ 2
    这种写法估计是 SHELL 写多了
    InkStone
        16
    InkStone  
       Apr 30, 2020
    其实如果 break 不是一个语句是一个表达式的话,这样写问题不大。
    毕竟 C 的短路求值是标准行为。
    autoxbc
        17
    autoxbc  
       Apr 30, 2020
    1. 代码要语义化,看起来在做的事情就应该是你真的希望做的事情
    2. 不要利用副作用,副作用可能被标准化,也可能不是
    liuzhiyong
        18
    liuzhiyong  
       Apr 30, 2020
    劝告楼主不要这样操作,代码首要任务是可读性,况且你这奇怪写法还没有性能提升。
    Takamine
        19
    Takamine  
       Apr 30, 2020
    我记得 PHP 里面有这种写法来着,不如试试上手世界上最好的语言。:doge:
    xingheng
        21
    xingheng  
       Apr 30, 2020
    Hello, world!

    Goodbye, world!
    cigarzh
        22
    cigarzh  
       May 2, 2020
    shell 写多了……
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4878 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 67ms · UTC 09:39 · PVG 17:39 · LAX 02:39 · JFK 05:39
    ♥ Do have faith in what you're doing.