Pro*_*kie 2 javascript if-statement ternary
我正在尝试将以下if-else转换为javascript中的三元运算符表示,如下所示
var x = 2;
if (x === 2) {alert("2");}
else
{ //do nothing}
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时:
(t==2)?(alert("1")):();
Run Code Online (Sandbox Code Playgroud)
Chrome会抛出一个SyntaxError.
我的问题是 - 如何在javascript中使用一个空的"else"分支的三元运算符 - 即":"之后的部分.此外,这是允许的 - 使用javascript中的三元运算符来执行语句 - 不执行赋值.
另外:上面的代码只是一个基本案例.我实际上试图将页面的所有DOM元素作为一个数组(称为all2),然后只有在它们具有非null类名时才将这些元素添加到另一个数组(仅限于调用).这是我的代码:
all2.forEach(function(e){ e.getAttribute("class") ? (only.push(e.getAttribute("class"))) : (); });
Run Code Online (Sandbox Code Playgroud)
如果我将第三个操作数留空,则会引发语法错误.传递null工作
Nin*_*olz 10
在评论中回答您的真实问题:
all2.forEach(function (e) {
e.getAttribute("class") && only.push(e.getAttribute("class"));
});
Run Code Online (Sandbox Code Playgroud)
做这个 :
(t==2)?(alert("1")):null;
Run Code Online (Sandbox Code Playgroud)
您可以将 null 替换为任何没有副作用的表达式。() 不是有效的表达式。
小智 5
你放了很多无用的括号,js中最好的NULL值是undefined.
document.getElementById('btn-ok').onclick = function(){
var val = document.getElementById('txt-val').value;
val == 2 ? alert(val) : undefined;
}Run Code Online (Sandbox Code Playgroud)
<input id="txt-val" type="number" />
<button type="button" id="btn-ok">Ok</button>Run Code Online (Sandbox Code Playgroud)
使用单行语句if更好
if(value === 2) alert(value);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10053 次 |
| 最近记录: |