2016-03-09 2 views
1

Какова цель этой яваскрипта структуры кода ?:Какова цель этой структуры кода 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

'() => {} ≡ function() {}. Bind (this)' – elclanrs

+0

Это синтаксис ES6/2015. Узнать его. Любить это. – Bosworth99

+3

Возможный дубликат [Функция стрелки против объявления/выражения функции: являются ли они эквивалентными/сменными?] (Http://stackoverflow.com/questions/34361379/arrow-function-vs-function-declaration-expressions-are-they-equivalent -exch) – Mathletics

ответ

1

It Экзамен 6 arrow function. Он очень похож на с, за исключением того, что он автоматически свяжет его лексическую область. И что граница сфера не может быть изменен с помощью call/apply или какой-либо дополнительной .bind(obj)

Arrow Реализация функции:

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); 
3

Этот синтаксис называется arrow functions и являются новыми ES2015.

Одно из очевидных преимуществ заключается в том, что для написания немного меньше кода.

Кроме того, функции стрелок лексически ограничены, поэтому, если вы используете this внутри и стрелочную функцию, она привязана к лексическому контейнеру. В некоторых сценариях это уменьшает необходимость явного связывания контекста (например, .bind(this)).

В вашем примере нет большой разницы (в области видимости), потому что this не используется, но синтаксис (субъективно) немного приятнее.

+0

В данном конкретном примере, что является преимуществом функции стрелки над базовой Js переменной, например так: вар GivenArrayOfJobs = selectedJob.WorkerModels.JobDetailsResponseModel = { \t JobId: «25c63b12-9e37-4be0-a8af-4cf237766317», WorkerId: "56e63b12-9e37-4be0-a8af-4cf237766317" }; –

Смежные вопросы