如何在三元运算的结果上执行多个函数
How to I execute multiple functions on the result of a ternary operation?
我有一个if/else语句,如果它的计算结果为true,则会导致调用两个函数。
if (isTrue) {
functionOne();
functionTwo();
}
else {
functionThree();
}
我希望能够将其放在这样的三元语句中:
isTrue ? (functionOne(), functionTwo()) : functionThree();
这可能吗?
你的例子确实是有效的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
但是,这是不可取的。带有if
语句的版本更加清晰易读,并且执行速度也一样快。在我见过或使用过的大多数代码库中,逗号运算符从未以这种方式使用,因为它比有用更令人困惑。
仅仅因为你可以,并不意味着你应该这样做。
你总是可以将任何内容包装到一个匿名函数中并立即调用它,即所谓的立即调用函数表达式 (IIFE),如下所示
isTrue ? (function() { functionOne(); functionTwo() })() : functionThree();
但正如你所看到的,它看起来非常糟糕,并且是对三元运算符的非常糟糕的滥用(它不会返回任何有用的东西),所以我真的建议不要这样做。
出于某种原因,对我有用的是将这两个函数作为数组中的对象返回。否则,三元运算符只返回最后一个函数。请参阅以下示例:
isTrue ? [fucnctionOne(), functionTwo()] : functionThree()
当然,您可以将语句括在括号*()*中,并用逗号*分隔它们,*
condition ? (doThis, andThis) : (doThat, andThat)
在您的情况下 (OP):
isTrue ? (functionOne(), functionTwo()) : functionThree();
相关文章:
- If语句只执行第一个条件并运行其他条件,但没有结果
- onchange选择get value并执行查询,然后在同一页面上显示结果
- 角度 2:使用一个 http 调用的结果来执行另一个调用
- 如何在三元运算的结果上执行多个函数
- jQuery $.get() JSON 函数正在执行,但不会产生任何结果
- JavaScript Regex在执行后会有不同的结果
- 使用Node中的Q promise库对值数组顺序调用/执行相同的函数;并返回带有结果的新数组/集合
- 根据两个异步函数调用的结果执行
- I'我在使用聚合核心ajax发送表单结果时遇到问题-go没有执行
- 皮赛德.JavaScript.以纯文本或 html 的形式执行 js 和 get 结果
- 在 Python 中使用 Selenium 执行 JavaScript 后存储结果
- 直接在元素上执行函数,而不是 document.getElementbyId 的结果
- 我怎样才能异步执行 JavaScript 代码片段并等待它们的结果
- 如何打开模态窗体,在控制器中执行操作,并在 Grails 中呈现结果
- 根据多个回调结果的结果执行最终回调
- 在表单中搜索字段,然后对所有选定的结果执行某些操作
- JavaScript原生Promise对两个结果执行回调
- 如何使用Firebase根据查询结果执行服务器验证
- 是否有一种方法可以在承诺完成时独立于结果执行一些代码
- 是否可以在Internet Explorer 8+中对客户端XSL转换的结果执行XPATH查询?