我可以不用else来写if else吗?
var x=1;
x==2 ? dosomething() : doNothingButContinueCode();
我注意到,把null的其他工作(但我不知道为什么或如果这是一个好主意)。
编辑:你们中的一些人似乎很困惑,为什么我要费心去尝试这个。放心,这纯粹是出于好奇。我喜欢摆弄JavaScript。
我可以不用else来写if else吗?
var x=1;
x==2 ? dosomething() : doNothingButContinueCode();
我注意到,把null的其他工作(但我不知道为什么或如果这是一个好主意)。
编辑:你们中的一些人似乎很困惑,为什么我要费心去尝试这个。放心,这纯粹是出于好奇。我喜欢摆弄JavaScript。
当前回答
一个小的添加到这个老线程..
如果你在for/while循环中用三元操作符求值一个表达式,并希望结果是continue或break——你会遇到问题,因为continue和break都不是表达式;它们是没有任何值的语句。
这将产生Uncaught SyntaxError: Unexpected令牌继续
for (const item of myArray) {
item.value ? break : continue;
}
如果你真的想要一个返回语句的一行程序,你可以使用这个:
for (const item of myArray) {
if (item.value) break; else continue;
}
附注:这段代码可能会引起一些质疑。只是说. .:)
其他回答
另一个选择:
x === 2 ? doSomething() : void 0;
一个小的添加到这个老线程..
如果你在for/while循环中用三元操作符求值一个表达式,并希望结果是continue或break——你会遇到问题,因为continue和break都不是表达式;它们是没有任何值的语句。
这将产生Uncaught SyntaxError: Unexpected令牌继续
for (const item of myArray) {
item.value ? break : continue;
}
如果你真的想要一个返回语句的一行程序,你可以使用这个:
for (const item of myArray) {
if (item.value) break; else continue;
}
附注:这段代码可能会引起一些质疑。只是说. .:)
如果你不做其他的,为什么不做:
if (x==2) doSomething();
对于三元表达式的一个分支,可以使用null。三元表达式在Javascript中作为语句是很好的。
不过,从风格上讲,如果你想调用一个过程,使用if..else更清楚:
if (x==2) doSomething;
else doSomethingElse
或者,就你来说,
if (x==2) doSomething;
从技术上讲,在那里放置null或0,或者只是一些随机值都可以(因为您没有使用返回值)。但是,为什么使用这个结构而不是if结构呢?当您以这种方式编写代码时,您试图做什么就不那么明显了,因为您可能会将人们与no-op(在您的情况下为null)混淆。