对于以下JavaScript代码,人们将如何计算评估/执行顺序?排除Operator precedence并专注于功能[{field1:"val1"},{field2:"val2"}....]
可以将“从右向左”和“由内而外”的原理应用于代码吗?
我的意思是,在这种情况下,JS评估的第一条语句是:
squareList
已经对数组中的每个项目进行了评估,然后我们将继续进行到行
return num > 0 && num % parseInt(num) === 0;
最后:
return arr.filter(function (num) {
如果我以错误的方式考虑问题,那么我需要一些帮助,我该如何使用指南或官方资源来了解评估/执行命令,首先执行什么?然后从那以后的陈述按什么顺序?
整个代码块:
return Math.pow(num, 2);
答案 0 :(得分:1)
const squareList = function squareList(arr) {
return arr.filter(function (num) {
return num > 0 && num % parseInt(num) === 0;
}).map(function (num) {
return Math.pow(num, 2);
});
};
所以发生的第一件事当然是
arr.filter(function (num) {
return num > 0 && num % parseInt(num) === 0;
})
内部函数在数组中的每个元素上运行,并且对于该函数返回true
的每个元素,该元素将添加到生成的过滤后的数组中,然后该过滤后的数组将代替整个arr.filter(...)
代码块
然后您就得到了
filteredArray.map(function (num) {
return Math.pow(num, 2);
});
内部函数再次在每个元素上运行,并将该函数的返回值添加到NEXT最终结果数组(映射数组)中
然后最终您将其退回
return mappedArray