【问题标题】:JavaScript Ternary with Logical ORJavaScript 三元与逻辑或
【发布时间】:2021-01-11 05:17:00
【问题描述】:
var a = '1';
console.log(a == ('2'||'1')?'hi':'hello');

这样做的条件将失败为 a = 1 。 由于此条件失败,它将 a 的值 1 与 2 进行比较。所以它总是打印你好。 有没有办法检查“||”之后的值('1')让它打印你好?

【问题讨论】:

    标签: javascript conditional-operator logical-or


    【解决方案1】:

    分别列出不同的可能性:

    a === '2' || a === '1' ? 'hi' : 'hello'
    

    或者使用数组和.includes:

    ['2', '1'].includes(a) ? 'hi' : 'hello'
    

    ('2'||'1') 的问题在于,在与a 进行比较之前,那里的整个部分都被评估为单个表达式,如果它是真实的,|| 将评估为初始值。所以('2' || '1') 解析为'2'

    【讨论】:

      【解决方案2】:

      var a = 1; a == '2'?'hi': a=='1'?'hello' :'';

      我发现这也有效....感谢使用不同方式回答的每个人..

      【讨论】:

        猜你喜欢
        • 2017-06-20
        • 1970-01-01
        • 2014-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-26
        相关资源
        最近更新 更多