我可以不用else来写if else吗?
var x=1;
x==2 ? dosomething() : doNothingButContinueCode();
我注意到,把null的其他工作(但我不知道为什么或如果这是一个好主意)。
编辑:你们中的一些人似乎很困惑,为什么我要费心去尝试这个。放心,这纯粹是出于好奇。我喜欢摆弄JavaScript。
我可以不用else来写if else吗?
var x=1;
x==2 ? dosomething() : doNothingButContinueCode();
我注意到,把null的其他工作(但我不知道为什么或如果这是一个好主意)。
编辑:你们中的一些人似乎很困惑,为什么我要费心去尝试这个。放心,这纯粹是出于好奇。我喜欢摆弄JavaScript。
当前回答
从技术上讲,在那里放置null或0,或者只是一些随机值都可以(因为您没有使用返回值)。但是,为什么使用这个结构而不是if结构呢?当您以这种方式编写代码时,您试图做什么就不那么明显了,因为您可能会将人们与no-op(在您的情况下为null)混淆。
其他回答
另一个选择:
x === 2 ? doSomething() : void 0;
这也是一个选项:
x==2 && dosomething();
Dosomething()只在x==2被赋值为true时才会被调用。这叫做短路。
它在这种情况下不常用,你真的不应该写这样的代码。我鼓励这种更简单的方法:
if(x==2) dosomething();
你应该始终编写可读的代码;如果你担心文件的大小,只需在众多JS压缩器的帮助下创建一个缩小版本。(例如谷歌的闭包编译器)
你有一个相当不寻常的三元运算符的用法。通常它被用作表达式,而不是语句,在一些其他操作中,例如:
var y = (x == 2 ? "yes" : "no");
所以,为了可读性(因为你所做的是不寻常的),并且因为它避免了你不想要的“else”,我建议:
if (x==2) doSomething();
从技术上讲,在那里放置null或0,或者只是一些随机值都可以(因为您没有使用返回值)。但是,为什么使用这个结构而不是if结构呢?当您以这种方式编写代码时,您试图做什么就不那么明显了,因为您可能会将人们与no-op(在您的情况下为null)混淆。
可能是最短的(基于OR运算符及其优先级)
x-2||dosomething()
设x=1, y=2; Let dosomething = console.log; x-2||dosomething('x dosomething '); y-2||dosomething('y dosomething ');