【发布时间】:2018-08-02 06:36:01
【问题描述】:
我尝试编写一个箭头函数来计算仅正整数的平方(不包括分数)。
const realNumberArray = [4, 5.6, -9.8, 3.14, 42, 6, 8.34];
const squareList = (arr) => {
"use strict";
const squaredIntegers = (arr) => {
let arrayChoosen = arr.filter(ele => ele > 0 && Number.isInteger(ele));
return arrayChoosen.map(x => x * x);
}
return squaredIntegers;
};
// test your code
const squaredIntegers = squareList(realNumberArray);
console.log(squaredIntegers);
但结果是一个函数声明,而不是我期望的数组。但是当我尝试以这种方式修改代码时
const squareList = (arr) => {
"use strict";
let squaredIntegers = arr.filter(ele => ele > 0 && Number.isInteger(ele));
squaredIntegers = squaredIntegers.map(val => val * val);
return squaredIntegers;
};
然后它输出我期望的数组。 为什么在第一种情况下它不起作用?
【问题讨论】:
-
在第一个示例中,从未调用函数
squaredIntegers(),而只返回函数引用。那么为什么你会期望结果首先是一个数组呢?
标签: javascript arrow-functions