带括号的ES6箭头功能

Vic*_* Le 6 javascript ecmascript-6 angular

我在代码中遇到了一个小问题,这让我感到困惑,并希望有人可以解释为什么会这样做.

代码1

sendText(){
    return this.http.get('/api')
        .map((response:Response) => response.json());
}
Run Code Online (Sandbox Code Playgroud)

代码2

sendText(){
    return this.http.get('/api').map((response:Response) => {
        response.json();
    });
}
Run Code Online (Sandbox Code Playgroud)

这两个代码之间的关键区别在于,在代码2中,我在箭头函数之后放置了括号,将我的任务添加到这些括号中,在代码1中,我将括号取出并将任务放在一行上.

我的问题是,为什么不从服务器端回来为未定义在未来我的目标代码2与angular2而提供的订阅方法代码1返回我怀疑的对象.

Roc*_*mat 12

(response:Response) => response.json()
Run Code Online (Sandbox Code Playgroud)

这是此的简写:

(response:Response) => { return response.json(); }
Run Code Online (Sandbox Code Playgroud)

{}让你添加块内的语句.没有它们,该函数只运行一个语句并返回其值.

文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions