JavaScript 三元与逻辑 OR

Mon*_*onu 1 javascript conditional-operator logical-or

var a = '1';
console.log(a == ('2'||'1')?'hi':'hello');
Run Code Online (Sandbox Code Playgroud)

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

Cer*_*nce 5

分别列出不同的可能性:

a === '2' || a === '1' ? 'hi' : 'hello'
Run Code Online (Sandbox Code Playgroud)

或者使用数组和.includes

['2', '1'].includes(a) ? 'hi' : 'hello'
Run Code Online (Sandbox Code Playgroud)

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