Ver*_*fic 2 javascript ternary-operator
我有一个if/else语句,如果它的计算结果为true,则会调用两个函数.
if (isTrue) {
functionOne();
functionTwo();
}
else {
functionThree();
}
Run Code Online (Sandbox Code Playgroud)
我希望能够将其置于这样的三元语句中:
isTrue ? (functionOne(), functionTwo()) : functionThree();
Run Code Online (Sandbox Code Playgroud)
这可能吗?
你的例子确实是有效的javascript.您可以使用逗号分隔表达式,并将其包含在带有三元括号的单个语句中.
var functionOne = function() { console.log(1); }
var functionTwo = function() { console.log(2); }
var functionThree = function() { console.log(3); }
var isTrue = true;
isTrue ? (functionOne(), functionTwo()) : functionThree();
// 1
// 2
isTrue = false;
isTrue ? (functionOne(), functionTwo()) : functionThree();
// 3
Run Code Online (Sandbox Code Playgroud)
但是,这是不可取的.带有if语句的版本更加清晰易读,执行速度也一样快.在实践中,逗号运算符很少,因为它比大多数时候更有用.
只因为你可以,并不意味着你应该.
您始终可以将任何内容包装到匿名函数中并立即调用它,即所谓的立即调用函数表达式(IIFE),如下所示
isTrue ? (function() { functionOne(); functionTwo() })() : functionThree();
Run Code Online (Sandbox Code Playgroud)
但正如你所看到的,它看起来非常糟糕,并且是对三元运算符的严重滥用(它不会返回任何有用的东西),所以我真的建议不要这样做。
| 归档时间: |
|
| 查看次数: |
4561 次 |
| 最近记录: |