Будучи студентом, которого приветствуют в чудесном мире JavaScript (как и в случае с любым другим языком, могу добавить), вы снова знакомитесь с функциями, в частности со специальным синтаксисом, причудами и ограничениями, с которыми они связаны при работе на языке, на котором вы работаете. учатся. В JavaScript функции имеют следующий базовый синтаксис:
let x = function name_of_function(parameters) {
function body, also know as a "block"
}
С выпуском ES6 в 2015 году появилась новая функция Arrow Functions: гладкий и лаконичный стиль написания функций JavaScript, который позволяет разработчику определять функцию следующим образом:
let x = (parameters) => {
function body / "block"
}
Со «стрелкой» — это использование =>
между параметрами и телом функции стрелки. В сети это иногда называют «толстой стрелой».
Стрелочные функции не имеют обычных привязок следующих ключевых слов: this, arguments, super, or new
this & super keywords
: стрелочные функции НЕ имеют своих собственных определенныхthis
в пределах прилагаемой лексической области. Другими словами,this
, используемый в теле стрелочной функции, относится к тому жеthis
, что и объект, несущий саму стрелочную функцию. Что касается ключевого словаsuper
, которое используется для вызова функций родителя объекта, применяется тот же принцип лексической области видимости, что и дляthis
. Стрелочные функции сsuper
в теле функции будут применять функциональность этого ключевого слова к родительскому элементу включающей их лексической области видимости (родительскому объекту, содержащему саму стрелочную функцию).arguments keyword
: объекты аргументов недоступны в стрелочных функциях, но доступны в обычных функциях.new keyword
: функции «обычного стиля» являются конструируемыми, что означает, что их можно вызывать с использованием ключевого словаnew
следующим образом:
let x = function(parameters) { do something; };
new x = (1,2,3);
В то время как стрелочные функции не являются конструируемыми, то есть их нельзя использовать в качестве конструкторов и использовать ключевое слово new
.