为什么我的箭头函数不返回数组,而是返回一个函数声明

时间:2018-08-02 06:36:01

标签: javascript arrow-functions

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

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;
};

然后输出我期望的数组。 为什么在第一种情况下它不起作用?

6 个答案:

答案 0 :(得分:1)

您需要返回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(arr); }; // test your code const squaredIntegers = squareList(realNumberArray); console.log(squaredIntegers); 函数的返回值,因此请尝试使用以下代码:

squaredIntegers

答案 1 :(得分:0)

因为仅返回函数名称-即-对函数的引用。

相反,您应该调用该函数:

return squaredIntegers();

您的第二个示例工作正常,因为您实际上是在调用arr.filter()并将其值分配给squaredIntegers

答案 2 :(得分:0)

您需要使用<?php namespace App; use Illuminate\Database\Eloquent\Model; class Sales_details extends Model { protected $table = 'sales_details'; protected $primaryKey = 'id'; public $timestamps = false; public function sale() { return $this->belongsTo('App\Sale', 'sales_id', 'id'); } public function product() { return $this->belongsTo('App\Product', 'product_id'); } } 调用squaredIntegers来获取新数组。

arr

return squaredIntegers(arr);

答案 3 :(得分:0)

因为第一个STATIC_ROOT = os.join.path(BASE_DIR, 'static') 返回函数本身,而不是返回在输入squareList上调用的函数。您可以改为arr调用它:

return

答案 4 :(得分:0)

因为当您需要返回函数调用的结果时返回函数。检查更正的代码。

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(arr);
};
// test your code
const squaredIntegers = squareList(realNumberArray);
console.log(squaredIntegers);

答案 5 :(得分:0)

您返回的是函数而不是函数调用。

input()更改为return squaredIntegers;

所以它将变成

return squaredIntegers(arr)