Javascript三元运算符,其他为空

时间:2015-08-12 09:04:38

标签: javascript if-statement ternary

我试图将以下if-else转换为javascript中的三元运算符表示,如下所示

var x = 2;
if (x === 2) {alert("2");}
else
         { //do nothing}

但是当我这样做时:

(t==2)?(alert("1")):();

Chrome会抛出一个SyntaxError。

我的问题是 - 如何在javascript中使用空的" else"分支 - 即"之后的部分:"。 此外,这是允许的 - 使用javascript中的三元运算符来执行语句 - 不执行赋值。

另外:上面的代码只是一个基本案例。我实际上试图将页面的所有DOM元素作为一个数组(称为all2),然后只有在它们具有非空类名时才将这些元素添加到另一个数组(仅限于调用)。这是我的代码:

all2.forEach(function(e){ e.getAttribute("class") ? (only.push(e.getAttribute("class"))) : (); }); 

如果我将第三个操作数留空,则会引发语法错误。传递null工作

7 个答案:

答案 0 :(得分:9)

在评论中回答你的真实问题:

all2.forEach(function (e) {
    e.getAttribute("class") && only.push(e.getAttribute("class"));
});

答案 1 :(得分:3)

这样做:

(t==2)?(alert("1")):null;

您可以使用任何没有副作用的表达式替换null。 ()不是有效的表达式。

答案 2 :(得分:3)

你推了很多无用的括号,js中最好的NULL值是undefined



document.getElementById('btn-ok').onclick = function(){
  var val = document.getElementById('txt-val').value;
  
  val == 2 ? alert(val) : undefined;
}

<input id="txt-val" type="number" />
<button type="button" id="btn-ok">Ok</button>
&#13;
&#13;
&#13;

使用单行if语句更好

if(value === 2) alert(value);

答案 3 :(得分:2)

在这种情况下,您不需要使用三元运算符。三元运算符需要第三个参数。

  

条件? expr1:expr2

Lokki在Conditional (ternary) Operator

您可以使用if statement

if ( t == 2 ) alert(1);

答案 4 :(得分:2)

不,你不能有其他的空,最好不要使用三元运算符,它需要第三个参数。选择简单的if条件。

if(t==2) alert("2");

答案 5 :(得分:1)

你可以选择在一行中做到这一点:

选项1 - noop功能

设置全局noop功能:

function noop(){}
(t==2)?(alert("1")):(noop());

option2 - &amp;&amp;操作

当你使用&amp;&amp; operater,操作数只有在普遍存在的情况下才会被评估,所以你可以写一下:

(t==2) && alert("1");

或者,如果你有一个想要推送的arry的exapmle,你可以测试它之前不是null:

arr && arr.push(obj)

答案 6 :(得分:0)

我也不喜欢。因此,您在正确的道路上寻找替代品。

在这种情况下,我会写:

t===2 && alert("2")

您的想法也是有效的,例如,您可以这样做:

t===2 ? alert("2") : null

但这是四个额外的字符。