提高对JavaScript中计算/执行的理解

提高对JavaScript中计算/执行的理解,javascript,Javascript,对于下面的JavaScript代码,如何计算计算/执行顺序?排除并专注于函数squareList,可以将从右向左和由内而外的原则应用于代码吗 我的意思是,JS在本例中评估的第一条语句是: return num > 0 && num % parseInt(num) === 0; 一旦对数组中的每个项都进行了评估,我们将进入下一行 return arr.filter(function (num) { 最后: return Math.pow(num, 2); 如果我的想法不

对于下面的JavaScript代码,如何计算计算/执行顺序?排除并专注于函数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);
所以首先发生的事情当然是

arr.filter(function (num) {
    return num > 0 && num % parseInt(num) === 0;
  })
当内部函数在数组中的每个元素上运行时,对于该函数返回true的每个元素,该元素被添加到结果筛选数组中,然后该筛选数组将取代整个arr.filter。。。代码块

然后你就有了

filteredArray.map(function (num) {
  return Math.pow(num, 2);
});
其中,内部函数在每个元素上运行,该函数的返回值被添加到下一个最终结果数组(映射数组)中

最后你还了它

return mappedArray

熟悉有帮助。在运算符和操作数之外,JS语句按照它们在文件中出现的顺序执行,函数除外,函数在调用时执行。顺序与函数链接的顺序相同,首先过滤器计算数组中每个项的条件语句,返回一个新数组,然后,映射为数组中的每个项计算Math.pow,并返回一个新数组
return mappedArray