JavaScript | Стрелочная функция без параметров

JavaScript | Стрелочная функция без параметров

 

Есть массив:

var massiv = [1, 2, 3]

Мы хотим преобразовать все элементы массива при помощи метода map() и стрелочной функции без параметров. Мы хотим просто возвращать строку «rrr» на каждом вызове стрелочной функции.

Стрелочная функция без параметров будет выглядеть так:

()=>"rrr"

Выражение с массивом и методом будет выглядеть так:

massiv.map(()=>"rrr")

Мы не передаём в функцию никаких параметров.

Стрелочная функция без параметров возвращает строку - JavaScript
Стрелочная функция без параметров возвращает строку — JavaScript

 

Это похоже на вызов метода заливки fill()

 

Немного про нашу стрелочную функцию без параметров

Стрелочные функции состоят из трёх элементов:

  • Первым элементом идут Параметры Стрелки (ArrowParameters)
  • Вторым элементом является сама стрелка — =>
  • Третьим элементом является Лаконичное Тело (ConciseBody)

Объявление стрелочной функции начинается с Параметров Стрелки (ArrowParameters), которые можно разделить на две составляющие:

  • объявление начинается с Идентификатора Привязки (BindingIdentifier)
  • объявление начинается с Обложки Списка Параметров Выражений и Стрелок в Скобках (CoverParenthesizedExpressionAndArrowParameterList)

Мы выбрали второй вариант определения Параметров Стрелки (ArrowParameters) т. к. у нас нет Идентификатора Привязки.

Обложка Списка Параметров Выражений и Стрелок в Скобках (CoverParenthesizedExpressionAndArrowParameterList) имеет 7 вариантов написания:

  • ( Expression[+In, ?Yield, ?Await] )
  • ( Expression[+In, ?Yield, ?Await] , )
  • ( )
  • ( … BindingIdentifier[?Yield, ?Await] )
  • ( … BindingPattern[?Yield, ?Await] )
  • ( Expression[+In, ?Yield, ?Await] , … BindingIdentifier[?Yield, ?Await] )
  • ( Expression[+In, ?Yield, ?Await] , … BindingPattern[?Yield, ?Await] )

 

Мы выбрали третий вариант написания Обложки()

CoverParenthesizedExpressionAndArrowParameterList - ECMAScript
CoverParenthesizedExpressionAndArrowParameterList — ECMAScript

Потом мы записали саму стрелку =>

ArrowFunction - ECMAScript
ArrowFunction — ECMAScript

Затем в Лаконичное Тело (ConciseBody) мы поместили строку «rrr«. Мы не использовали стандартных фигурных скобок {} как для Функционального Тела (FunctionBody), а воспользовались «свободным» написанием Выражения Тела (ExpressionBody) без фигурных скобок. В нашем случае «rrr» является результатом выполнения стрелочной функции без параметров.

ConciseBody - ECMAScript
ConciseBody — ECMAScript

 

То же самое с использованием оператора function

Этот пример можно записать так:

massiv.map(function(){return "rrr"})

Обычная анонимная функция в этом случае выглядит так:

function(){return "rrr"}

Пример вызова выражения:

Стрелочная и обычная функции без параметров решают одну задачу - JavaScript
Стрелочная и обычная функции без параметров решают одну задачу — JavaScript

 

Информационные ссылки

JavaScript | Функции (Function)

Оператор return

Стандарт ECMAScript — Раздел «15.3 Arrow Function Definitions» — https://tc39.es/ecma262/#sec-arrow-function-definitions