我正在做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);
通常在许多功能中使用的典型花括号,它不起作用。为什么?
[不带大括号,为您添加了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);
将正常工作。
一个是一组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中