这是为什么-
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;
}
它们之间唯一的区别是空格和花括号吗?
当您将任意数组传递给两个函数时,第一个返回一个空数组,第二个返回一个已过滤以仅包含正整数然后平方的数组。
答案 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;
};
这将起作用。