对于下面的JavaScript代码,如何确定求值/执行顺序?排除Operator precedence,专注于函数squareList,可以将“从右向左”和“从内向外”的原则应用到代码中吗?
我的意思是,在这种情况下,JS计算的第一个语句是:
return num > 0 && num % parseInt(num) === 0;对于数组中的每一项,都已经计算了一次,然后我们将前进到该行
return arr.filter(function (num) {最后:
return Math.pow(num, 2);如果我以错误的方式思考这个问题,那么我需要一些帮助,我如何使用指南或官方资源来了解评估/执行顺序以及将首先运行什么?接下来的语句是什么顺序的呢?
整个代码块:
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);
});
};
const squaredIntegers = squareList([-3, 4.8, 5, 3, -3.2]);
console.log(squaredIntegers);发布于 2019-12-19 20:18:19
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);
});同样,内部函数在每个元素上运行,该函数的返回值被添加到下一个最终结果数组,即映射数组
最后你把它还给我
return mappedArrayhttps://stackoverflow.com/questions/59409593
复制相似问题