三元运算符在JS中无法正常工作

Avi*_*mar -1 javascript ternary-operator ternary

我正在运行以下代码并得到意外的结果:

var a = 1, b =2 ,c = 3;
console.log(5*a+ b>0?b:c);
Run Code Online (Sandbox Code Playgroud)
预期结果是:7,但得到2。

Kob*_*obe 5

您的代码概念正确,但执行错误。三元正在正确地工作。

目前,您的代码正在执行如下操作:

const a = 1
const b = 2
const c = 3

// This will evaluate to true, since 5 * 1 + 2 = 7, and 7 is greater than 0
if (5 * a + b > 0) { 
  // So return b
  console.log(b)
} else {
  console.log(c)
}
Run Code Online (Sandbox Code Playgroud)

您应该使用方括号来分隔三元:

const a = 1
const b = 2
const c = 3

console.log(5 * a + (b > 0 ? b : c));
Run Code Online (Sandbox Code Playgroud)