条件运算符评估不正确

时间:2019-05-04 19:13:03

标签: javascript conditional-operator

问题

我正在尝试使用条件运算符根据另一个变量的字符串值将值分配给变量。

代码

const test = fnUserPlatform.platform === ('ps4' || 'xb1' || 'pc') ? 'p2.br.m0.weekly' : 'br.defaultsolo.current';

当fnUserPlatform.platform等于'ps4'时,测试每周正确评估为p2.br.m0。但是,如果fnUserPlatform.platform为'xb1'或'pc',则评估为'br.defaultsolo.current',这是不正确的。

有人知道为什么用这种方法进行评估吗?

2 个答案:

答案 0 :(得分:4)

使用此表达式

'ps4' || 'xb1' || 'pc'

您将获得第一个字符串,因为该字符串是一个truthy值,并且通过使用logical OR ||,该值将作为该表达式的结果。

如果第一个值是一个空字符串,则将获取第一个真实值

'' || 'xb1' || 'pc'
      ^^^^^

对于检查是否有项目和某些值的更好方法,可以采用数组并用Array#includes检查。

const
    test = ['ps4', 'xb1', 'pc'].includes(fnUserPlatform.platform)
       ? 'p2.br.m0.weekly'
       : 'br.defaultsolo.current';

答案 1 :(得分:-1)

尝试执行以下操作:

const test = fnUserPlatform.platform === 'ps4' ? 'p2.br.m0.weekly' : fnUserPlatform.platform === 'xb1' ? 'p2.br.m0.weekly' : fnUserPlatform.platform === 'pc' ? 'p2.br.m0.weekly' : 'br.defaultsolo.current';