提问人:ColstonBod-oy 提问时间:4/20/2022 更新时间:4/20/2022 访问量:47
JavaScript 中与三元运算符的短路交互
Short-Circuiting Interaction with Ternary Operator in JavaScript
问:
我目前正在学习JavaScript,我遇到了这个问题:
const numArray = [1, 6, 9, 4, 21, 8, 15];
const sumEvenOdd = numArray.reduce((acc, current) =>
console.log(acc) && current % 2 === 0
? acc.map(i => i.hasOwnProperty('even') ? {...i, even: i.even + current} : i)
: acc.map(i => i.hasOwnProperty('odd') ? {...i, odd: i.odd + current} : i),
[{"even": 0, color: 'red'}, {"odd": 0, color: 'green'}]
);
const numArray = [1, 6, 9, 4, 21, 8, 15];
const sumEvenOdd = numArray.reduce((acc, current) =>
console.log(acc) || current % 2 === 0
? acc.map(i => i.hasOwnProperty('even') ? {...i, even: i.even + current} : i)
: acc.map(i => i.hasOwnProperty('odd') ? {...i, odd: i.odd + current} : i),
[{"even": 0, color: 'red'}, {"odd": 0, color: 'green'}]
);
当您运行上述每个代码时,您会注意到第一个代码仅修改“odd”属性,这不是我在使用 && 运算符时所期望的,但是当我将其更改为 || 运算符时,我得到了我最初期望的代码。有人可以向我解释我是如何获得这 2 个输出的吗?
答: 暂无答案
评论
&&
||
console.log
{ ... }
&&
console.log()
返回 ,所以基本上你最终会得到:undefined
(false && <true/false>) ? <map even numbers> : <map odd numbers>