es6箭头函数什么时候要加return?什么时候不加return?

411 阅读1分钟

函数执行体里边加了{}的时候,就一定要加return,否则你的值就不能被交出去,只能在函数体中做一些逻辑处理

举例1:

const reqLogin = (user,pass) => {return ajax('/login',{user,pass},'POST')}
等价于
const reqLogin = (user,pass) => ajax('/login',{user,pass},'POST')

举例2:

this.setState(state => {return {count : state.count + 1}})
等价于
this.setState(state => ({count : state.count + 1}))
function createIncreAction(data){
    return {type:'increment',data}
}
等价于
const createIncreAction = data => ({type:'increment',data})

可以看到当函数返回的是对象格式的时候且没有用到return时,需要用圆括号包住它,这是比较特殊的地方,否则比编译器会把这个对花括号当做是函数执行体的花括号,而不是对象的花括号!!!

归纳总结

let fn2 = (m,n)=>{
    return m+n;
};

// 上面的只有一条return语句 可以简写为下面的省略大括号

let fn2 = (m,n)=>m+n;