函数不会仅仅因为大括号而返回?

时间:2019-04-19 13:41:49

标签: javascript function higher-order-functions

为什么在下一种情况变为真时,箭头功能的花括号使它产生不确定的内容。

    function greater(n){
    return (m)=>{m>n};
     }
   >greater(10)(11)
   <undefined

    function great(n){
    return m=>m>n;
    } 
   <great(10)(11)
   >true

1 个答案:

答案 0 :(得分:1)

箭头函数有一个隐式的返回值,这意味着如果不使用{}包装它们的主体,则不需要使用return关键字。您的函数返回undefined,因为您没有提供返回值。您需要删除花括号或添加return关键字:

function greater(n){
    return (m)=>{return m>n};
}

最后要注意的一点是,如果要隐式返回对象,则花括号将被视为函数主体,因此将不返回任何内容。在这种情况下,您需要将对象包装在括号中:

const wrong = () => { test: true }
const right = () => ({ test: true })