Страницы

Поиск по вопросам

вторник, 9 октября 2018 г.

Оператор => в JavaScript

Изучаю JavaScript, в Википедии встретил пример описания многомерных массивов
код такой:
// Создание двумерного массива чисел: var array = [ [11, 12, 13, 14, 15, 16], // Первая строка-массив [21, 22, 23, 24, 25, 26], // Вторая [31, 32, 33, 34, 35, 36] // Третья ];
// Вывод массива на консоль: array.forEach((subArray) => { // Для каждого под-массива, subArray.forEach((item) => { // для каждого его элемента, console.log(item); // — вывести этот элемент на консоль. }); });
Вопрос: что означает оператор => (оператор ли это вообще)? Читаю Д. Флэнагана "JavaScript. Подробное руководство", в тексте данный оператор не встречается, в сети тоже не смог найти описание.
UPD: Спасибо за ответы!


Ответ

Данный оператор называется стрелочной функцией. Появился с ECMA2015. https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Functions/Arrow_functions
Стрелочные функции помогают существенно сократить код, ведь
var a = a.map( s => s.length );
выглядит куда лучше, чем
var a = a.map(function(s){ return s.length } );
Стрелочными функциями решают еще одну наболевшую проблему JavaScript: необходимость передавать this в контекст исполнения функции. Каждая функция имеет свой контекст, поэтому приходится либо присваивать this переменной:
var that = this; var filter1 = function(){ // this != that return that.visible; };
Либо использовать bind для привязки контекста:
var filter1 = (function(){ return this.visible; }).bind( this );
Со стрелочной функцией все значительно проще и компактнее, потому что она не создает свой контекст this:
var filter1 = () => this.visible;

Комментариев нет:

Отправить комментарий