在函数调用中作为参数传递时,胖箭头语法的含义是什么?

时间:2016-03-29 06:59:25

标签: lambda typescript angular

我正在查看以下代码,来自here

import {Http} from 'angular2/http'
import {Injectable} from 'angular2/core'
@Injectable()
export class AddressBookService {
    http:Http;
    constructor(http:Http){
        console.log('Creating AddressBookService');
        this.http = http;
    }
    getEntries(){
        return this.http.get('./people.json').map(res => res.json());
    }
}

我无法理解res => res.json()的含义是什么。我认为它必须是一个lambda函数,但我不明白它的意义。它似乎没有返回并存储变量或执行任何有用的操作。

如果有人可以解释这一点,那将会很棒。

3 个答案:

答案 0 :(得分:4)

$b

ES6 syntax sugar,在这种情况下,它与此ES5兼容版本的功能相同:

return this.http.get('./people.json').map(res => res.json());

名称return this.http.get('./people.json').map(function(res) {return res.json();}); 及其在代码中的使用表明map将是某种集合,而this.http.get('./people.json')会迭代每个元素,从而创建新的集合在每个元素上执行函数的结果。它应该与Array.map

类似
map

答案 1 :(得分:2)

想想这一行:

return this.http.get('./people.json').map(res => res.json());

作为此片段:

function myMap(res) {
    return res.json();
}

var res = this.http.get('./people.json');
return myMap(res);

答案 2 :(得分:0)

https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Functions/Arrow_functions

this绑定到定义函数的范围(当前AddressBookService实例。因为该函数不使用this,所以如果使用{=>则无关紧要1}}或function () ...但在任何地方使用=>也没有什么坏处,因为如果您实际使用this,它就不会出错。