函数在没有大括号的情况下也不能使用,为什么?

问题描述 投票:1回答:2

我正在做FreeCode营地练习,这让我很困惑:

const squareList = arr =>
  arr
    .filter(num => num > 0 && num % parseInt(num) === 0)
    .map(num => Math.pow(num, 2));

const squaredIntegers = squareList([4, 5.6, -9.8, 3.14, 42, 6, 8.34, -2]);

console.log(squaredIntegers);

这可以正常工作,但是如果我放:

 const squareList = arr => {
      arr
        .filter(num => num > 0 && num % parseInt(num) === 0)
        .map(num => Math.pow(num, 2));
    }
    const squaredIntegers = squareList([4, 5.6, -9.8, 3.14, 42, 6, 8.34, -2]);

    console.log(squaredIntegers);

通常在许多功能中使用的典型花括号,它不起作用。为什么?

javascript math functional-programming brackets curly-braces
2个回答
2
投票

[不带大括号,为您添加了return

使用花括号,您需要自己添加。


const squareList = arr => {
    return arr
        .filter(num => num > 0 && num % parseInt(num) === 0)
        .map(num => Math.pow(num, 2));
}
const squaredIntegers = squareList([4, 5.6, -9.8, 3.14, 42, 6, 8.34, -2]);

console.log(squaredIntegers);

将正常工作。


1
投票

一个是一组statements(带有花括号),另一个是expression

(param1, param2, …, paramN) => { statements } // needs to return something
(param1, param2, …, paramN) => expression
// equivalent to: => { return expression; }

因此,当您使用第一种形式时,您需要从中return进行某些操作

因此,在您无法使用的情况下,应为return语句

const squareList = arr => {
     return arr
        .filter(num => num > 0 && num % parseInt(num) === 0)
        .map(num => Math.pow(num, 2));
    }

可以计算为值的任何代码单位都是表达式

A statement是用于执行以下操作的一条指令或一组指令:具体动作

更详细的解释在mozilla docs

© www.soinside.com 2019 - 2024. All rights reserved.