Первоклассное выражение в javascript

Русские Блоги

Оно отличается от имени объявления функции, а выражение функции не имеет имени. Результатом этого выражения является значение, которое присваивается переменной ask. Эта переменная является ссылкой на функцию.

Будь то выражение функции или объявление функции, результатом является функция.

Кажется, что нет разницы между выражениями функций и объявлениями функций, на самом деле браузеры трактуют их по-разному.
Разница 1:
При использовании объявления функции объявление функции будет создано до выполнения кода, а при использовании выражения функции функция будет создана при выполнении кода на этапе выполнения.
Разница 2:
относится к именованию функций. При использовании объявления функции будет создана переменная с тем же именем, что и имя функции, и она будет указывать на функцию; при использовании выражения функции обычно нет необходимости назначать имя функции. Поэтому либо назначьте функцию переменной в коде, либо используйте выражения функций другими способами.

Функциональные выражения, как и другие выражения, могут появляться во многих разных местах. В JavaScript функции — это значения, которые могут быть присвоены значениям переменных, так же как числа, строки, логические значения и объекты. Значения функций могут быть переданы или возвращены из функций и даже сохранены в Объект или массив. Разница в значении функции в том, что мы можем ее назвать. Ученые-информатики дали этому типу значения эквивалент первого термина.
То, что вы можете сделать с первоклассными ценностями, включает:
(1) Назначьте его переменной или сохраните в структурах данных, таких как объекты и массивы.
(2) Передайте его функции.
(3) Верните их из функции.

Значения функций, числа, строки, логические значения, объекты и т. Д. — все это первоклассные значения в JavaScript.

Посмотрите, как браузер анализирует веб-страницы:

Процесс анализа
Во время анализа веб-страницы (перед выполнением любого кода) браузер ищет объявление функции от начала до конца. Когда он находит объявление функции, браузер создает соответствующую функцию, а затем сохраняет функцию, чтобы ее можно было получить при вызове, и Создайте переменную с тем же именем, что и имя функции, а затем присвойте переменной полученную ссылку на функцию;
После обработки всех объявлений функций браузер возвращается к началу кода и начинает выполнять код в порядке от начала до конца.
Если он встречает простой оператор присваивания переменной, браузер создаст переменную и инициализирует ее.
Если встречается переменная, и правая часть ее является выражением функции, браузер сначала создаст эту переменную, и функция справа будет сохранена, чтобы ее можно было получить при вызове, а затем создаст указатель на функцию. Ссылка и присвоить эту ссылку переменной.
Если он снова встретит объявление функции, оно будет пропущено, потому что оно было обработано ранее.
  1. Перед обработкой другого кода сначала обработайте объявление функции.
  2. Объявление функции не возвращает ссылку на функцию, но создает переменную с тем же именем, что и функция, и присваивает ей ссылку на функцию.
  3. Выражение функции возвращает ссылку на функцию, созданную выражением функции.
  4. Вы можете хранить ссылки на функции в переменных.
  5. Объявление функции является полным оператором, а выражение функции — только частью оператора.
  6. Для функций, созданных объявлениями функций и выражениями функций, операторы, которые их вызывают, обрабатываются таким же образом.
  7. По возможности рекомендуется использовать объявления функций, поскольку они обрабатываются в первую очередь.
Читайте также:  Python pip package dependencies

Источник

First-class Function

A programming language is said to have First-class functions when functions in that language are treated like any other variable. For example, in such a language, a function can be passed as an argument to other functions, can be returned by another function and can be assigned as a value to a variable.

Examples

Assigning a function to a variable

const foo = () =>  console.log("foobar"); >; foo(); // Invoke it using the variable // foobar 

We assigned an Anonymous Function in a Variable, then we used that variable to invoke the function by adding parentheses () at the end.

Note: Even if your function was named, you can use the variable name to invoke it. Naming it will be helpful when debugging your code. But it won’t affect the way we invoke it.

Passing a function as an argument

function sayHello()  return "Hello, "; > function greeting(helloMessage, name)  console.log(helloMessage() + name); > // Pass `sayHello` as an argument to `greeting` function greeting(sayHello, "JavaScript!"); // Hello, JavaScript! 

We are passing our sayHello() function as an argument to the greeting() function, this explains how we are treating the function as a value.

Note: The function that we pass as an argument to another function is called a callback function. sayHello() is a callback function.

Returning a function

function sayHello()  return () =>  console.log("Hello!"); >; > 

In this example, we are returning a function from another function — We can return a function because functions in JavaScript are treated as values.

Note: A function that returns a function or takes other functions as arguments is called a higher-order function.

See also

Found a content problem with this page?

This page was last modified on Jun 8, 2023 by MDN contributors.

Your blueprint for a better internet.

Источник

Первоклассное выражение javascript это

В недавнем вопросе я получил предложения поговорить, среди прочего вещи, аспект JavaScript, где функции являются объектами «первого класса». Что означает «первый класс» в этом контексте, в отличие от других объектов?

ProfK 1 Апр 2009 в 16:00 Лучший ответ

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

На самом деле, как и любая другая переменная

  • Функция является экземпляром типа Object
  • Функция может иметь свойства и иметь ссылку на метод конструктора.
  • Вы можете сохранить функцию в переменной
  • Вы можете передать функцию в качестве параметра другой функции
  • Вы можете вернуть функцию из функции

также прочитайте комментарий TrayMan, интересно .

Sander Versluys 1 Апр 2009 в 12:44

Я думаю, когда что-то является первым классом в языке, это означает, что это поддерживается его синтаксисом, а не библиотекой или синтаксическим сахаром. например, классы в C не являются первоклассными

Jiang Qiu 1 Апр 2009 в 12:05

Простые в JavaScript функции — это объекты первого класса, то есть функции имеют тип Object, и их можно использовать первоклассным образом, как и любой другой объект (String, Array, Number и т. Д.), Поскольку они на самом деле являются объектами. самих себя. Они могут храниться в переменных, передаваться в качестве аргументов функциям, создаваться внутри функций и возвращаться из функций.

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

По сути, это означает, что вы можете делать с функциями все, что вы можете делать со всеми другими элементами в языке программирования. Таким образом, в случае JavaScript это означает, что все, что вы можете делать с Integer, String, Array или любым другим типом Object, вы можете также делать с функциями.

Jörg W Mittag 1 Апр 2009 в 13:57

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

Function instanceof Object //returns true

Как и объект, функция может иметь свойства и иметь ссылку на свою функцию конструктора.

  • Функции могут быть сохранены в переменной как значение.
  • Функции могут быть переданы в качестве аргументов другим функциям
  • Вы можете вернуть функцию из функции
  • Может быть сохранен в переменной в качестве ссылки.

Это означает, что функция фактически наследуется от Object. Так что вы можете передать его и работать с ним, как с любым другим объектом.

Rashack 1 Апр 2009 в 12:05

Простой тест. Если вы можете сделать это на своем языке (например, Python):

Ваш язык рассматривает функции как объекты первого класса.

Yuval Adam 1 Апр 2009 в 12:53

Функции JavaScript — это функции первого класса, означающие, что функции и объекты рассматриваются как одно и то же. Функции могут быть сохранены как переменные внутри объекта или массива, а также могут быть переданы в качестве аргумента или возвращены другой функцией. Это делает функцию «первоклассными гражданами в JavaScript»

JavaScript использует синтаксис буквального обозначения, что затрудняет полное понимание того факта, что в JavaScript функции являются объектами.

Оба declerations эквивалентны. Используя new , мы вызываем функцию конструктора объекта. Также с помощью <> (ярлык JavaScript называется литералами) мы вызываем функцию построения объекта. <> — просто более короткое представление для создания экземпляра конструктора.

Большинство языков использует ключевое слово new для создания объекта, поэтому давайте создадим объект JavaScript.

Как видите, мы создали имя объекта function .

Создание той же функции имени объекта с использованием выражения функции JavaScript.

Здесь мы идем, мы только что создали функцию имени объекта.

Hashem Qolami 30 Дек 2015 в 14:08

Это означает, что функции — это объекты, имеющие тип и поведение. Их можно динамически создавать, передавать как любой другой объект, и тот факт, что их можно вызывать, является частью их интерфейса.

cadrian 1 Апр 2009 в 12:05

Определение на сайте Mozilla является кратким и ясным. Согласно им,

В JavaScript функции являются первоклассными объектами, , потому что они могут иметь свойства и методы, как и любой другой объект . Что отличает их от других объектов, так это то, что функции могут быть вызваны. Вкратце, они являются объектами Function.

функция — это «подпрограмма», которая может вызываться внешним (или внутренним в случае рекурсии) кодом функции. Как и сама программа, функция состоит из последовательности операторов, называемых телом функции. Значения могут быть переданы в функцию, и функция вернет значение.

Более полное одобрение формулировки Стрейчи-Суссмана-Абельсона. Так что, если ваш язык поддерживает такую конструкцию, то у вас есть функция в качестве языка первого класса 🙂

Короче говоря, все является первоклассным объектом, если оно действует на языке как манипуляция состоянием типа объекта или типа объекта. Просто то, что вы можете оперировать и передавать заявления и оценивать в выражениях одновременно. Или даже короче: когда вы можете рассматривать функцию как объект, который может быть вызван дополнительно.

Источник

Оцените статью