使用 if-else 速记时省略第二个表达式

IT技术 javascript ternary-operator conditional-operator shorthand
2021-02-02 04:47:01

我可以在if else没有 的情况下速记else吗?

var x=1;

x==2 ? dosomething() : doNothingButContinueCode();   

我注意到null为 else 工作(但我不知道为什么或者这是否是个好主意)。

编辑:你们中的一些人似乎对我为什么要费心尝试这个感到困惑。请放心,这纯粹是出于好奇。我喜欢玩弄 JavaScript。

6个回答

您所拥有的是三元运算符的一种相当不寻常的使用通常它在其他一些操作中用作表达式,而不是语句,例如:

var y = (x == 2 ? "yes" : "no");

因此,为了可读性(因为您所做的事情不寻常),并且因为它避免了您不想要的“其他”,我建议:

if (x==2) doSomething();
仅当左右参数之间可能存在类型强制时,才需要三重等号运算符,并且仅当您实际上不打算使用类型强制时。
2021-03-20 04:47:01
您必须使用三个“=”符号才能使逻辑完美。如 var y = (x === 2 ? "yes" : "no");
2021-03-26 04:47:01
在这里,我们可以添加作为完整命令插入的结束行(如我的示例使用 jquery 淡入淡出功能) x == 2 ? $(element).fadeIn() :$(element).fadeIn() ; 没有强制返回变量(如第一个代码中的 var y)。
2021-03-28 04:47:01

这也是一种选择:

x==2 && dosomething();

dosomething()只有在x==2评估为真时才会调用这称为短路

它在这种情况下并不常用,您真的不应该编写这样的代码。我鼓励这种更简单的方法:

if(x==2) dosomething();

您应该始终编写可读的代码;如果您担心文件大小,只需在众多 JS 压缩器之一的帮助下创建它的缩小版本。(例如 Google 的Closure Compiler

我个人相信如果它是一个小如果有一个结果如果为真..它更快更容易写 x == 2 && dosomething();
2021-03-16 04:47:01
哦,短路,对吧。我认为在大多数中级开发人员和一些“经验丰富的专业人士”中,代码​​可读性受到重视。
2021-03-19 04:47:01
if x==2 && doSomething() || doSomethingElse()
2021-03-26 04:47:01
从技术上讲,您不需要大括号: if (1 - 1 === 0) $('.woot').text('Woot!'); 我一直在 PHP 中使用这种形式,现在我正在采用 Coffeescript,我也在我的 Javascript 中使用它。
2021-03-31 04:47:01
我希望 JavaScript 包含这种类似 Ruby 的语法:doSomething() if x === 2. 我不怀念 Ruby,但我确实怀念那个。
2021-03-31 04:47:01

另外一个选择:

x === 2 ? doSomething() : void 0;
如果有人不知道为什么使用 void 0 我建议阅读此链接
2021-03-15 04:47:01

如果你不做其他,为什么不做:

if (x==2) doSomething();
即使你做了其他你也可以做到
2021-03-18 04:47:01

null对于三元表达式的分支之一,使用是很好的。并且三元表达式可以作为 Javascript 中的语句。

不过,就风格而言,如果您想调用一个过程,使用 if..else 编写它会更清楚:

if (x==2) doSomething;
else doSomethingElse

或者,就你而言,

if (x==2) doSomething;