Ургенчского филиала Ташкентского университета информационных технологий



Download 131,25 Kb.
bet7/8
Sana03.06.2022
Hajmi131,25 Kb.
#633496
1   2   3   4   5   6   7   8
Bog'liq
Nodirbek Kamiljonov

Стрелочные функции
(Arrow functions)
Стрелочные функции — функции вида "arrow function expression" (неверно fat arrow function) — имеют укороченный синтаксис по сравнению с function expression и лексически связывает значение this. Стрелочные функции всегда анонимны. Посмотрите также пост блога hacks.mozilla.org "ES6 In Depth: Arrow functions".
На введение стрелочных функций повлияли два фактора: более короткие функции и лексика this.
Более короткие функции
В некоторых функциональных паттернах приветствуется использование более коротких функций. Сравните:
var a = [
'Hydrogen',
'Helium',
'Lithium',
'Beryllium'
];

var a2 = a.map(function(s) { return s.length; });


console.log(a2); // выводит [8, 6, 7, 9]


var a3 = a.map(s => s.length);


console.log(a3); // выводит [8, 6, 7, 9]


Copy to Clipboard
Лексика this
До стрелочных функций каждая новая функция определяла своё значение this (новый объект в случае конструктора, undefined в strict mode, контекстный объект, если функция вызвана как метод объекта, и т.д.). Это оказалось раздражающим с точки зрения объектно-ориентированного стиля программирования.
function Person() {
// Конструктор Person() определяет `this` как самого себя.
this.age = 0;

setInterval(function growUp() {


// Без strict mode функция growUp() определяет `this`
// как global object, который отличается от `this`
// определённого конструктором Person().
this.age++;
}, 1000);
}

var p = new Person();


Copy to Clipboard
В ECMAScript 3/5 эта проблема была исправлена путём присвоения значения this переменной, которую можно было бы замкнуть.
function Person() {
var self = this; // Некоторые выбирают `that` вместо `self`.
// Выберите что-то одно и будьте последовательны.
self.age = 0;

setInterval(function growUp() {


// Колбэк ссылается на переменную `self`,
// значением которой является ожидаемый объект.
self.age++;
}, 1000);
}
Copy to Clipboard
Альтернативой может быть связанная функция (bound function), с которой можно правильно вручную определить значение this для функции growUp().
В arrow function значением this является окружающий его контекст, так следующий код работает ожидаемо:
function Person() {
this.age = 0;

setInterval(() => {


this.age++; // |this| должным образом ссылается на объект Person
}, 1000);
}

var p = new Person();


Copy to Clipboard


Далее
Подробное техническое описание функций в статье справочника Функции
Смотрите также Function в Справочнике JavaScript для получения дополнительной информации по функции как объекту.
Внешние ресурсы:

  • ECMAScript® 2015 Language Specification

  • Учебник по Javascript - замыкания

  • « Предыдущая статья

  • Следующая статья »


Download 131,25 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish