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

2020-04-30 17:07:57 +08:00
 Cielos
而我用 if (a == -1) break; 就一切正常,搞不懂

请问各位大佬,错在哪里啊?
3632 次点击
所在节点    JavaScript
22 条回复
sarvatathagata
2020-04-30 17:20:18 +08:00
break 是一条语句,不能被转换成一个值。然而&&操作符的两侧必须是值
kiracyan
2020-04-30 17:36:24 +08:00
这编译报错吧
phpfpm
2020-04-30 17:38:04 +08:00
看了你的头像,我发出了沉思:可能你入错行了。。
DL9412
2020-04-30 17:38:10 +08:00
个人理解,逻辑运算符两端都应该是一个值,或者能输出值的表达式。break,return,continue 都没法转换为值。
你 Boolean(break)也会报一样的错误。

看见一个类似的问题 http://stackmirror.caup.cn/page/rh50ycxwvuig
liuxiaohua
2020-04-30 17:38:22 +08:00
楼主这是哪门子的语法 第一次见
kumasama
2020-04-30 17:45:14 +08:00
哪有这种语法,不加&&多简洁
Cielos
2020-04-30 17:45:47 +08:00
纳鲁货多!谢谢二位大佬
@DL9412
@sarvatathagata
hbolive
2020-04-30 17:45:51 +08:00
头像把我吸引进来的。。
annielong
2020-04-30 17:47:13 +08:00
老老实实按语法走不好吗、
sneezry
2020-04-30 17:47:57 +08:00
是参考了 make && make install 么 (doge
vicnicLight007
2020-04-30 17:49:13 +08:00
请给我你头像的高清大图链接,谢谢
krixaar
2020-04-30 17:51:11 +08:00
我大概明白了,因为 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
2020-04-30 17:51:24 +08:00
@annielong 李立超的 JS 教程里这样用过,我就拿来当 低配 if 用了
l1nyanm1ng
2020-04-30 17:57:55 +08:00
大大大(指代码
doge
fengtons
2020-04-30 18:12:07 +08:00
这种写法估计是 SHELL 写多了
InkStone
2020-04-30 18:14:48 +08:00
其实如果 break 不是一个语句是一个表达式的话,这样写问题不大。
毕竟 C 的短路求值是标准行为。
autoxbc
2020-04-30 18:50:43 +08:00
1. 代码要语义化,看起来在做的事情就应该是你真的希望做的事情
2. 不要利用副作用,副作用可能被标准化,也可能不是
liuzhiyong
2020-04-30 19:42:35 +08:00
劝告楼主不要这样操作,代码首要任务是可读性,况且你这奇怪写法还没有性能提升。
Takamine
2020-04-30 21:09:21 +08:00
我记得 PHP 里面有这种写法来着,不如试试上手世界上最好的语言。:doge:
lizz666
2020-04-30 21:26:04 +08:00

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

https://www.v2ex.com/t/667684

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

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

© 2021 V2EX