为什么花括号和/或空格会有所作为?

时间:2019-02-19 21:37:46

标签: javascript chaining arrow-functions

这是为什么-

const squareList = (arr) => {
  "use strict";
  const sqr = arr.filter((numbers) => {
    numbers > 0 && Number.isInteger(numbers)
  }).map((numbers) => {
    Math.pow(numbers, 2)
    })
  return sqr;
};

在功能上与此不同-

const squareddList = (arr) => { 
  "use strict";
  const sqr = arr.filter((numbers) => numbers > 0 && Number.isInteger(numbers)).map((numbers) => Math.pow(numbers, 2))
  return sqr; 
}

它们之间唯一的区别是空格和花括号吗?

当您将任意数组传递给两个函数时,第一个返回一个空数组,第二个返回一个已过滤以仅包含正整数然后平方的数组。

2 个答案:

答案 0 :(得分:4)

不带花括号的箭头函数在函数主体中隐式返回表达式的结果,因此:

const someFunction = () => 10
someFunction(); // Returns 10

等同于

const someFunction = () => {
  return 10;
}
someFunction(); // Returns 10

并且等同于:

const someFunction = () => {
  10;
}
someFunction(); // Returns undefined

答案 1 :(得分:2)

区别在于,在第一个中,您不会“返回”值。 在箭头功能中,如果放在大括号中,则需要返回值,否则返回值。

 const squareList = (arr) => {
  "use strict";
  const sqr = arr.filter((numbers) => {
    return numbers > 0 && Number.isInteger(numbers)
  }).map((numbers) => {
   return Math.pow(numbers, 2)
    })
  return sqr;
};

这将起作用。