Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用if-else速记时省略第二个表达式_Javascript_Ternary Operator_Conditional Operator_Shorthand - Fatal编程技术网

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()