Javascript 使用if-else速记时省略第二个表达式
如果没有Javascript 使用if-else速记时省略第二个表达式,javascript,ternary-operator,conditional-operator,shorthand,Javascript,Ternary Operator,Conditional Operator,Shorthand,如果没有else,我可以写if-else速记吗 var x=1; x==2 ? dosomething() : doNothingButContinueCode(); 我注意到为else设置null(但我不知道为什么或者这是否是个好主意) 编辑:你们中的一些人似乎对我为什么要尝试这个感到困惑。请放心,这纯粹是出于好奇。我喜欢玩JavaScript 如果你不做else,为什么不做: if (x==2) doSomething(); 对于三元表达式的一个分支,使用null很好。三元表达式
else
,我可以写if-else
速记吗
var x=1;
x==2 ? dosomething() : doNothingButContinueCode();
我注意到为else设置null
(但我不知道为什么或者这是否是个好主意)
编辑:你们中的一些人似乎对我为什么要尝试这个感到困惑。请放心,这纯粹是出于好奇。我喜欢玩JavaScript 如果你不做else,为什么不做:
if (x==2) doSomething();
对于三元表达式的一个分支,使用
null
很好。三元表达式可以作为Javascript中的语句使用
不过,就风格而言,如果您想调用一个过程,那么使用if..else编写此代码更为清晰:
if (x==2) doSomething;
else doSomethingElse
或者,对你来说
if (x==2) doSomething;
从技术上讲,在那里输入null或0,或者只是一些随机的值(因为您没有使用返回值)。但是,为什么要使用此构造而不是
if
构造?当您以这种方式编写代码时,您试图做的事情就不那么明显了,因为您可能会用无操作(在您的情况下为空)来混淆人们。您使用的是非常不寻常的。通常在其他操作中用作表达式,而不是语句,例如:
var y = (x == 2 ? "yes" : "no");
因此,为了可读性(因为您所做的是不同寻常的),并且因为它避免了您不想要的“其他”,我建议:
if (x==2) doSomething();
这也是一种选择:
x==2 && dosomething();
只有当x==2
的计算结果为true时,才会调用dosomething()
。这就是所谓的
它在这种情况下并不常用,您真的不应该编写这样的代码。我鼓励这种更简单的方法:
if(x==2) dosomething();
您应该始终编写可读的代码;如果您担心文件大小,只需在众多JS压缩器的帮助下创建一个缩小版即可。(例如谷歌的)另一种选择:
x === 2 ? doSomething() : void 0;
除了这根很旧的线之外,再加上一点 如果您正在为
/计算中的表达式,而使用三元运算符循环,并希望继续或中断,那么您将遇到问题,因为继续和中断都不是表达式,它们是没有任何值的语句
这将产生Uncaught SyntaxError:Unexpected token continue
for (const item of myArray) {
item.value ? break : continue;
}
如果您确实需要返回语句的单行程序,则可以使用以下命令:
for (const item of myArray) {
if (item.value) break; else continue;
}
- 另外,这段代码可能会引起一些注意。只是说……)李>
可能最短(基于和its)
设x=1,y=2;
让dosomething=s=>console.log;
x-2 | | dosomething('x do something');
y-2 | | dosomething('y do something')代码>我认为有一种var | var
语法。小心,因为它可能很难“看到”,特别是(国际海事组织)的术语有问题。节约使用。@JaredFarrish不是三元组的全部要点,它们比使用if语句更容易“看到”吗?还有,你说的语法是什么,看起来很有趣。不,我不认为它们在所有情况下都更容易理解。我心目中的“要点”是要么将所有代码放在一行(“我的代码比你的代码短”),要么将其放在具有简单化结果的具体文本案例中。堆放垃圾箱尤其有害,应不惜一切代价避免<代码>:)
@Hassan-我见过类似于foo=bar | cat代码>,其中如果第一个为false?空?,它“通过”到第二个。不过,我只见过它,不使用它。@JaredFarrish:那是a | | b
或a&b
,否则b
将始终被计算。哦,短路,对了。我认为在大多数中级开发人员和一些“经验丰富的专业人士”中,代码可读性被低估了。从技术上来说,你不需要大括号:if(1-1==0)$('.woot')。text('woot!')
我一直在PHP中使用该表单,现在我采用了Coffeescript,我也在Javascript中使用它。我个人认为如果它是一个小if,那么结果就是一个if。。写x==2&&dosomething()更快更容易if x==2&&doSomething()| | doSomethingElse()
我希望JavaScript包含这种类似红宝石的语法:doSomething()if x==2
。我不想念Ruby,但我确实想念它。你可以做到这一点,即使你做了elseIn这里我们可以添加作为完整命令插入的结束线(如我的示例使用jquery淡入淡出函数)x==2$(element.fadeIn():$(element.fadeIn();返回变量不是必须的(如第一个代码中的var y)。必须使用三个“=”符号才能使逻辑完美。如变量y=(x==2?“是”:“否”);如果有人不知道为什么要使用void 0,我建议阅读此内容
x-2||dosomething()