JavaScript中filter方法配合回调筛选奇数的运行原理是什么?
问题解答
你对逻辑的猜测是完全正确的,整个代码的运行规则可以拆解为以下几个部分:
1. filter方法的执行逻辑
Array.prototype.filter() 会遍历原数组的每一个元素,将每个元素依次传入回调函数,回调返回真值(truthy)时当前元素被保留到结果数组,返回假值(falsy)时元素被过滤。
2. 回调函数的判断逻辑
isOddNumber 回调返回的是参数对2取余的结果:
- 奇数除以2余数为
1,在JS中1属于truthy值 - 偶数除以2余数为
0,在JS中0属于falsy值
3. 逐元素执行过程
对应你给出的数组,遍历过程如下:
- 元素1:
1%2=1→ 真值 → 保留 - 元素2:
2%2=0→ 假值 → 过滤 - 元素4:
4%2=0→ 假值 → 过滤 - 元素7:
7%2=1→ 真值 → 保留 - 元素3:
3%2=1→ 真值 → 保留 - 元素5:
5%2=1→ 真值 → 保留 - 元素6:
6%2=0→ 假值 → 过滤
最终得到的结果数组自然全为奇数。
如果你觉得隐式类型转换不好理解,可以把回调写为显式返回布尔值的形式,和原有代码效果完全一致:
function isOddNumber(number) { return number % 2 === 1; }
内容的提问来源于stack exchange,提问作者deepveeneck
相关产品推荐
相关产品推荐

