【问题标题】:javascript multiple ternary operatorjavascript 多三元运算符
【发布时间】:2020-04-29 09:21:45
【问题描述】:

我目前有一些 JS,它检查用户代理(iOs 与否)并根据结果设置一些变量。所以,我有类似的东西:

var isOnIOS = navigator.userAgent.match(/iPad/i)|| navigator.userAgent.match(/iPhone/i);
var eventName_unload = isOnIOS ? "something_if_true" : "something_if_false";
var eventName_load = isOnIOS ? "something0_if_true" : "something0_if_false";

现在,我必须再做一次检查,三星 briswer 是这样的:

var isOnSamsung=navigator.userAgent.match(/SAMSUNG|Samsung|SGH-[I|N|T]|GT-[I|N]|SM-[A|N|P|T|Z]|SHV-E|SCH-[I|J|R|S]|SPH-L/i)

我想在这里创建一个多重三元组,如下所示:

var eventName_unload = isOnIOS ? "something_if_true" : "something_if_false" :: isOnSamsung ? "somethingX_if_true" : "somethingX_if_false";

显然,上述不正确(只是伪代码),我想知道调用多个三元运算符来实现这一点的正确语法是什么。

谢谢。

【问题讨论】:

  • 在带括号的三元值内使用另一个三元,例如query ? ( another query ? value1 : value2 ) : value3
  • 请记住嵌套三元条件 = 可读性损失。
  • 这能回答你的问题吗? Multiple Ternary Operators

标签: javascript


【解决方案1】:

你这样做

const eventName_unload = isOnIOS ? "something_if_true" : 
                         isOnSamsung ? "somethingX_if_true" : "something_if_false";

除非您想在不是三星或 IOS 时专门做些别的事情。但这就是您“堆叠”多个三元运算符的方式。

【讨论】:

【解决方案2】:

我认为你也可以这样做:

const eventName_unload= condition ? ("if-true"? "true result": "false result"):"first false result";

因此您也可以链接更多条件!
示例

var a=2;
var b= a >2 ?( a<5 ? "within 2-5":"gt 5"):"000";
console.log(b);

【讨论】:

    猜你喜欢
    • 2019-11-09
    • 2012-02-11
    • 2016-06-26
    • 2016-01-15
    • 1970-01-01
    • 2014-04-04
    • 2011-12-07
    • 2010-12-19
    相关资源
    最近更新 更多