如果更改包含三元运算符的顺序,为什么逻辑 OR 的工作方式不同
Why logical OR working differently if change the order contains terinary operator
为什么下面的代码给出了不同的输出?
var test;
var output = test ? 'Test' : 'No Test' || true;
var output2 = true || test ? 'Test' : 'No Test'
console.log(output); // No Test
console.log(output2); // Test
因为 operator precedence。条件运算符的优先级为 4,而逻辑 OR 的优先级为 5,因此您的代码等效于:
var test;
var output = test ? 'Test' : ('No Test' || true);
// undefined ? 'Test' : 'No Test'
var output2 = (true || test) ? 'Test' : 'No Test'
// true ? 'Test' : 'No Test'
console.log(output);
console.log(output2);
OR 分组具有更高的优先级 - 它周围的标记首先组合在一起。
var output2 = true || test ? 'Test' : 'No Test'
in this above code you used true
thats why it has printed Test
your conditional operator here got as true
var output2 = test ? 'Test' : 'No Test'
如果你这样尝试过,它会打印出 No Test
var test;
var output = test ? 'Test' : 'No Test' || true;
var output2 = test ? 'Test' : 'No Test'
console.log(output); // No Test
console.log(output2); // Test
为什么下面的代码给出了不同的输出?
var test;
var output = test ? 'Test' : 'No Test' || true;
var output2 = true || test ? 'Test' : 'No Test'
console.log(output); // No Test
console.log(output2); // Test
因为 operator precedence。条件运算符的优先级为 4,而逻辑 OR 的优先级为 5,因此您的代码等效于:
var test;
var output = test ? 'Test' : ('No Test' || true);
// undefined ? 'Test' : 'No Test'
var output2 = (true || test) ? 'Test' : 'No Test'
// true ? 'Test' : 'No Test'
console.log(output);
console.log(output2);
OR 分组具有更高的优先级 - 它周围的标记首先组合在一起。
var output2 = true || test ? 'Test' : 'No Test'
in this above code you used
true
thats why it has printedTest
your conditional operator here got as true
var output2 = test ? 'Test' : 'No Test'
如果你这样尝试过,它会打印出 No Test
var test;
var output = test ? 'Test' : 'No Test' || true;
var output2 = test ? 'Test' : 'No Test'
console.log(output); // No Test
console.log(output2); // Test