为什么0 && 0%2 === 0返回0而不是true?并且数字0不会落在filter()之后的数组中。
/*
0%2 returns 0;
0 && 0%2 returns 0;
0 && 0%2 === 0 returns 0 instead true;
0 === 0 returns true. I am confused.
*/
const y = ['0','1','2','3','4','5']
.map(x => +x) // [0,1,2,3,4,5]
.filter(x => x && x % 2 === 0) // [2,4] ,instead [0,2,4]
.reduce((accum, item)=> accum * item); // 8
console.log(y); //8
最佳答案
为了说明一点,您在这里错过了方括号:
0 && 0%2 returns 0;
0 && 0%2 === 0 returns 0 instead true;
带括号:
(0 && 0%2) === 0 returns true;
发生这种情况是因为在您的示例中,比较发生在逻辑和之前。所以基本上:
0%2 === 0 returns true;
0 && true returns 0;
关于javascript - 为什么过滤器不捕获0并返回两个数字,而是三个呢?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52303001/