Функции в JavaScript

Содержание
Введение
Пример
body.clientWidth: ширина страницы
Похожие статьи

Введение

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

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

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

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

Пример

Создайте файл first-class.js

function square(x) { return x * x; } var f = square(5) console.log(square) console.log(f)

ƒ square() 25

Изменим код

function square(x) { return x * x; } var f = square console.log(square) console.log(f) console.log(f(5))

ƒ square() ƒ square() 25

РЕКЛАМА от Яндекса. Может быть недоступна в вашем регионе

Конец рекламы от Яндекса. Если в блоке пусто считайте это рекламой моей телеги

Пример кастомной функции map()

function square(x) { return x * x; } function my_map(func, arg_list) { result = []; for(var i = 0; i < arg_list.length; i++){ result.push(func(arg_list[i])) } return result; } var squares = my_map(square, [1, 2, 3, 4, 5]) console.log(squares) function cube(x) { return x * x * x; } var cubes = my_map(cube, [1, 2, 3, 4, 5]) console.log(cubes)

(5) [1, 4, 9, 16, 25] 0:1 1:4 2:9 3:16 4:25 (5) [1, 8, 27, 64, 125] 0:1 1:8 2:27 3:64 4:125

Замыкания

Создайте файл closures.js

function html_tag(tag) { function wrap_text(msg) { console.log('<' + tag + '>' + msg + '</' + tag + '>') } return wrap_text } print_h1 = html_tag('h1') console.log(print_h1) print_h1('Test Headline!') print_h1('Another Headline!') print_p = html_tag('p') print_p('Test Paragraph!')

ƒ wrap_text() <h1>Test Headline!</h1> <h1>Another Headline!</h1> <p>Test Paragraph!</p>

Пояснения на примере print_h1:

print_h1 = html_tag('h1')

Заряжает функцию html_tag тегом h1

Теперь все , что будет передано в print_h1 это уже не tag, а msg, так как наружу уже торчит не html_tag а wrap_text

Это видно когда выполняется console.log(print_h1)

ƒ wrap_text()

и этот msg будет попадать именно во внутреннюю функцию wrap_text и оборачиваться тегом h1

Похожие статьи
JavaScript
Функции
typeof(): Определить тип переменной
Массивы
Сортировка массива
Скролл вверх и вниз
Определить ширину экрана
Mocha Framework
Запросы к REST API на JS
TicTacToe
Ошибки

РЕКЛАМА от Яндекса. Может быть недоступна в вашем регионе

Конец рекламы от Яндекса. Если в блоке пусто считайте это рекламой моей телеги

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: