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

Обновлено: 04.11.2024

В недавнем вопросе я получил предложения поговорить, среди прочего вещи, аспект 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 и т. Д.), Поскольку они на самом деле являются объектами. самих себя. Они могут храниться в переменных, передаваться в качестве аргументов функциям, создаваться внутри функций и возвращаться из функций.

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

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

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

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

  • Функция является экземпляром типа Object.

Function instanceof Object //returns true

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

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

Это означает, что функция фактически наследуется от 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.

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

Arpit 21 Авг 2018 в 10:37

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

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

Читайте также: