javascript - 增加对 JavaScript 中评估/执行的理解
问题描述
对于以下 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);
解决方案
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
推荐阅读
- python - 您如何应用忽略平局的最大过滤器?
- nuxt.js - Nuxt js this.$route.query 始终为空
- javascript - TypeError:无法读取未定义的属性“地图”
- javascript - “提交表单数据”的格式日期
- javascript - 查找用于从 EuroMillions 获取彩票号码的 API
- django - 将 Django 升级到 2.2 后,工厂男孩的 post_generation 挂钩未在模型对象上设置属性
- c# - 将 DropDownList 项插入 SQL 数据库
- api - Zapier - Xero:自定义集成
- mysql - 如何在mysql中获取用户创建的数据库列表
- python-3.x - 运行 ibapi 的 EReader 线程中的异常错误