我试图编写一个箭头函数来计算仅正整数(不包括分数)的平方。



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

09-27 07:56