Binary logical operator to express a conditional in Javascript
我使用三元运算符,但经常希望检查没有else子句的内容。我想知道有没有什么捷径可以忽略这一点。
我发现
作为if (a) {b}的替换,保存2个字符,但不保存
我想这是有道理的,它是一个三元运算符。
我唯一的想法是那些空的花括号有点难看,有没有其他方法来指定一个空白的:语句?
或者,是否有二元?运算符?我已经在规范中查过了,但不知道如何使用二进制逻辑运算符,我想这就是if的目的。
是否有某种方法可以使用二进制逻辑运算符来表示的条件或简写?我知道这可能是3个角色懒惰的高度,但我只是好奇是否有人有任何技巧可以分享。
- 您可以执行a && b(),假设b是一个函数调用。不过,我不喜欢。
- 写三元比较方便,但比写三元慢得多。
- @拉杜博格丹:你说的"慢得多"是什么意思?
- @Bergi,这不是if else速记的精确复制品,它是三元运算符速记&172;172;ppl,太快,无法关闭这里的问题。
- @LMMX:请阅读那个问题和答案。你要的是一个if的速记,另一个问题是"我能不写其他速记吗?"!那有什么区别?
- @拉杜博格丹,我不认为这是对的,就写作和阅读而言,这绝对不是。
- @我承认他们是相似的,但欧普并没有提到三元运算符的名字,所以寻找我的人很难找到它。寻找if else速记的人会从这个答案中找到三元运算符,寻找三元运算符速记的人会发现这个…这个线程没有提到我想要的和JavaScript缺少的保护结构。
- 在这个问题上,&&是最重要的答案。顺便说一下,别这样。
- 嗯,只是想知道。投反对票表明这几乎不是最佳实践LOL
- @伯吉,速度差可以忽略不计,但差别是…stackoverflow.com/questions/17328641/…和stackoverflow.com/questions/11368948/…和
- @Radubogdan:只有当你用if/else做的事情与用三元运算符做的事情不同时,才会发生这种情况。看看你链接的那个问题为什么。但是,OP计划使用三元而不是if/else,而不使用其返回值;这样就绝对不会产生速度差。
您的代码有几个问题:
在三元? :表达式中,各小节不是语句,它们是表达式。我从来没有见过{}的用法;没关系,但从字面上看,任何非空的表达式都可以:
1 2 3 4 5 6 7
| a ? b : 0
a ? b : false
a ? b : null
a ? b : 2 + 2 |
这真的不是最清晰的代码简单逻辑的方法,比如测试一个简单的条件。在我看来,一个if语句更清晰,你不必为了满足句法要求而选择一个毫无意义的表达式。
这也是惯用语,尽管(同样,观点)不太清楚:
它模仿了一些语言中存在的一个称为"保护"的结构。