箭头函数是ES6引入的一种新的函数声明方式,它具有简洁的语法和词法作用域的特性。然而,箭头函数的返回值并不像普通函数一样根据代码块中的return语句来确定,而是由箭头函数自身的语法规则决定。
当箭头函数的函数体只有一条语句时,可以省略花括号{}和return关键字。这意味着如果箭头函数的函数体是一个函数声明,它会被当作一个表达式来执行,而不是返回一个函数声明的结果。
例如,如果你写了一个箭头函数返回一个函数声明:
const arrowFunc = () => functionDeclaration();
function functionDeclaration() {
return [1, 2, 3];
}
在这种情况下,箭头函数会执行函数声明并将其结果作为返回值,而不是直接返回函数声明本身的结果。这就是为什么你发现箭头函数不返回数组,而是返回了函数声明。
如果你想要箭头函数直接返回一个数组,可以使用括号来包裹数组字面量,将其视为一个表达式:
const arrowFunc = () => ([1, 2, 3]);
这样,箭头函数就会将包裹在括号中的数组字面量作为一个整体返回,而不是执行其中的函数声明。
总结起来,箭头函数的返回值取决于其自身的语法规则。当函数体只有一条语句时,它会被当作一个表达式执行,并将其结果作为返回值。如果你希望箭头函数直接返回一个数组,需要使用括号将数组字面量包裹起来。
领取专属 10元无门槛券
手把手带您无忧上云