“Функция - объект первого класса” - почему?

238
27 ноября 2017, 20:18

В различной литературе (в частности на википедии, у Стефанова, у Сошникова) функции в JavaScript называют "объектами первого класса". Понятно, что функция - объект. Но почему именно "первого класса" и что это вообще значит - нигде не разъясняется. Поэтому, прошу объяснить. Возможно, есть какие-то критерии, по которым нечто можно определить как объект первого класса?

Answer 1

Можно почитать это или "Structure and Interpretation of Computer Programs " (за авторством Gerald Jay Sussman и Harry Abelson).

Если критерии функции первого класса сформулировать, то:

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

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

READ ALSO
узнать, авторизован ли пользователь youtube v3 oAuth2

узнать, авторизован ли пользователь youtube v3 oAuth2

Имеется регистрация посредством oAuth 20 на ютубе, требуется скрывать\показывать кнопку авторизации в зависимости от того, зарегистрирован...

276
Как парсить html страничку с JavaScript в python 3?

Как парсить html страничку с JavaScript в python 3?

Как парсить html страничку с JavaScript в python 3 и что для этого нужно

254
Ошибка при запуске Atom на debian “Couldn't load XPCOM”

Ошибка при запуске Atom на debian “Couldn't load XPCOM”

При запуске Atom на Debian пишет:

183
Safari не видит стили CSS

Safari не видит стили CSS

Браузер Safari почему-то не видит некоторые стили СSS и некторые JSДругие браузеры (Сhrome, FireFox, IE) отображают содержимое корректно

302