首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >增加对JavaScript中的评估/执行的理解

问增加对JavaScript中的评估/执行的理解
EN

Stack Overflow用户
提问于 2019-12-19 20:13:24
回答 1查看 39关注 0票数 0

对于下面的JavaScript代码,如何确定求值/执行顺序?排除Operator precedence,专注于函数squareList,可以将“从右向左”和“从内向外”的原则应用到代码中吗?

我的意思是,在这种情况下,JS计算的第一个语句是:

代码语言:javascript
复制
return num > 0 && num % parseInt(num) === 0;

对于数组中的每一项,都已经计算了一次,然后我们将前进到该行

代码语言:javascript
复制
return arr.filter(function (num) {

最后:

代码语言:javascript
复制
return Math.pow(num, 2);

如果我以错误的方式思考这个问题,那么我需要一些帮助,我如何使用指南或官方资源来了解评估/执行顺序以及将首先运行什么?接下来的语句是什么顺序的呢?

整个代码块:

代码语言:javascript
复制
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);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-19 20:18:19

代码语言:javascript
复制
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);
  });
};

所以发生的第一件事当然是

代码语言:javascript
复制
arr.filter(function (num) {
    return num > 0 && num % parseInt(num) === 0;
  })

其中内部函数在数组中的每个元素上运行,并且对于该函数返回true的每个元素,该元素将被添加到结果过滤数组中,然后该过滤数组将取代整个arr.filter(...)代码块

然后你就会得到

代码语言:javascript
复制
filteredArray.map(function (num) {
  return Math.pow(num, 2);
});

同样,内部函数在每个元素上运行,该函数的返回值被添加到下一个最终结果数组,即映射数组

最后你把它还给我

代码语言:javascript
复制
return mappedArray
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59409593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档