我试图编写一个箭头函数来计算仅正整数(不包括分数)的平方。
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;
};
然后输出我期望的数组。
为什么在第一种情况下它不起作用?
最佳答案
因为仅返回函数名称-即-对函数的引用。
相反,您应该调用该函数:
return squaredIntegers();
第二个示例工作正常,因为您实际上是在调用
arr.filter()
并将其值分配给squaredIntegers