这个javascript代码结构的目的是什么?

时间:2016-03-09 18:37:14

标签: javascript

这个javascript代码结构的目的是什么?:

var GivenArrayOfJobs = () => {
    var selectedJob: WorkerModels.JobDetailsResponseModel = {
        JobId: "25c63b12-9e37-4be0-a8af-4cf237766317",
        WorkerId: "56e63b12-9e37-4be0-a8af-4cf237766317"
    };
    return selectedJob;
}

具体来说,我不确定以下语法对比更传统的js实现的含义或优势:

var GivenArrayOfJobs = () => {

2 个答案:

答案 0 :(得分:3)

此语法称为arrow functions,是ES2015规范中的新增内容。

一个明显的优点是编写的代码略少。

此外,箭头函数是词法范围的,所以如果你使用this内部和箭头函数,它将绑定到词法容器。在某些情况下,这减少了显式绑定上下文的需要(例如.bind(this))。

在您的示例中,没有太大区别(在范围界定中)因为未使用this,但语法(主观地)更好一些。

答案 1 :(得分:1)

这是Ecmascript 6 arrow function。它与anonymous function非常相似,只是它会自动将其词法范围绑定到它中。并且无法通过call / apply或任何进一步的.bind(obj)

修改该约束范围

箭头功能实现:

var GivenArrayOfJobs = () => {
    selectedJob.WorkerModels.JobDetailsResponseModel = {
        JobId: "25c63b12-9e37-4be0-a8af-4cf237766317",
        WorkerId: "56e63b12-9e37-4be0-a8af-4cf237766317"
    };
    return selectedJob;
}

匿名函数实现:

var GivenArrayOfJobs = function(){
    selectedJob.WorkerModels.JobDetailsResponseModel = {
        JobId: "25c63b12-9e37-4be0-a8af-4cf237766317",
        WorkerId: "56e63b12-9e37-4be0-a8af-4cf237766317"
    };
    return selectedJob;
}.bind(this);