HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>Зачастую нам нужно повторять одни и те же действия в разных частях кода<strong>JavaScript</strong>. Например, иногда требуется передать сообщение при входе пользователя на сайт, при выходе и в других случаях.</p>
1 <p>Зачастую нам нужно повторять одни и те же действия в разных частях кода<strong>JavaScript</strong>. Например, иногда требуется передать сообщение при входе пользователя на сайт, при выходе и в других случаях.</p>
2 <p>Чтобы не повторять тот же код множество раз, используют<strong>функции (functions)</strong>. По сути, функции - это основные "строительные кирпичики" программы на<strong>JavaScript</strong>.</p>
2 <p>Чтобы не повторять тот же код множество раз, используют<strong>функции (functions)</strong>. По сути, функции - это основные "строительные кирпичики" программы на<strong>JavaScript</strong>.</p>
3 <p>Примеры встроенных функций: • prompt(message, default); • alert(message); • confirm(question).</p>
3 <p>Примеры встроенных функций: • prompt(message, default); • alert(message); • confirm(question).</p>
4 <p>Однако в<strong>JavaScript</strong>можно создавать и свои функции.</p>
4 <p>Однако в<strong>JavaScript</strong>можно создавать и свои функции.</p>
5 <h2>Объявление функций в JS</h2>
5 <h2>Объявление функций в JS</h2>
6 <p>Рассмотрим пример создания function для показа сообщений showMessage():</p>
6 <p>Рассмотрим пример создания function для показа сообщений showMessage():</p>
7 function showMessage() { alert( 'Приветствуем вас на сайте!' ); }<p>В вышеприведённом примере ключевое слово -<strong>function</strong>, которое идёт в самом начале. Потом прописывается имя функции, затем параметры (в скобках), далее - тело функции (код, выполняемый при вызове).</p>
7 function showMessage() { alert( 'Приветствуем вас на сайте!' ); }<p>В вышеприведённом примере ключевое слово -<strong>function</strong>, которое идёт в самом начале. Потом прописывается имя функции, затем параметры (в скобках), далее - тело функции (код, выполняемый при вызове).</p>
8 <p>Объявленная таким образом функция будет доступна по имени:</p>
8 <p>Объявленная таким образом функция будет доступна по имени:</p>
9 function showMessage() { alert( 'Приветствуем вас на сайте!' ); } showMessage(); showMessage();<p>Отображённый код выведет сообщение 2 раза, так как, грубо говоря, выше мы уже сформировали своеобразную ссылку на текст сообщения, в результате чего происходит передача данных. Это демонстрирует нам главную цель создания функций:<strong>решение проблемы излишнего дублирования кода в JavaScript</strong>. Если же вам понадобится поменять текст либо метод его вызова, это можно сделать лишь в одном месте - в функции, отвечающей за его вызов.</p>
9 function showMessage() { alert( 'Приветствуем вас на сайте!' ); } showMessage(); showMessage();<p>Отображённый код выведет сообщение 2 раза, так как, грубо говоря, выше мы уже сформировали своеобразную ссылку на текст сообщения, в результате чего происходит передача данных. Это демонстрирует нам главную цель создания функций:<strong>решение проблемы излишнего дублирования кода в JavaScript</strong>. Если же вам понадобится поменять текст либо метод его вызова, это можно сделать лишь в одном месте - в функции, отвечающей за его вызов.</p>
10 <h2>Локальные переменные функции</h2>
10 <h2>Локальные переменные функции</h2>
11 <p>В функцию могут входить и локальные переменные (объявляются через<strong>var</strong>). Они видны только внутри функции:</p>
11 <p>В функцию могут входить и локальные переменные (объявляются через<strong>var</strong>). Они видны только внутри функции:</p>
12 function showMessage() { var message = 'Привет, моё имя - Петя!'; // это локальная переменная alert( message ); } showMessage(); // 'Привет, моё имя - Петя!' alert( message ); // &lt;-- здесь ошибка, ведь переменная видна только внутри функции<p>Помните, что блоки<strong>while, switch, for, if/else, do..while</strong>никак не влияют на зону видимости переменных, то есть при объявлении переменных в данных блоках они будут видны во всей функции. Пример:</p>
12 function showMessage() { var message = 'Привет, моё имя - Петя!'; // это локальная переменная alert( message ); } showMessage(); // 'Привет, моё имя - Петя!' alert( message ); // &lt;-- здесь ошибка, ведь переменная видна только внутри функции<p>Помните, что блоки<strong>while, switch, for, if/else, do..while</strong>никак не влияют на зону видимости переменных, то есть при объявлении переменных в данных блоках они будут видны во всей функции. Пример:</p>
13 function count() { // переменные i и j не будут удалены по окончании цикла for (var i = 0; i &lt; 3; i++) { var j = i * 2; } alert( i ); // i=3, последнее значение i, цикл при нём перестал работать alert( j ); // j=4, последнее значение j, которое цикл вычислил }<p>При этом неважно, где конкретно в function вы объявляете переменную. Вне зависимости от метода ваших действий объявление сработает одни раз и распространится на всю функцию:</p>
13 function count() { // переменные i и j не будут удалены по окончании цикла for (var i = 0; i &lt; 3; i++) { var j = i * 2; } alert( i ); // i=3, последнее значение i, цикл при нём перестал работать alert( j ); // j=4, последнее значение j, которое цикл вычислил }<p>При этом неважно, где конкретно в function вы объявляете переменную. Вне зависимости от метода ваших действий объявление сработает одни раз и распространится на всю функцию:</p>
14 function count() { var i, j; // здесь мы передвинули объявление var в начало for (i = 0; i &lt; 3; i++) { j = i * 2; } alert( i ); // i=3 alert( j ); // j=4 }<h2>Внешние переменные функции</h2>
14 function count() { var i, j; // здесь мы передвинули объявление var в начало for (i = 0; i &lt; 3; i++) { j = i * 2; } alert( i ); // i=3 alert( j ); // j=4 }<h2>Внешние переменные функции</h2>
15 <p>Функция позволяет вызвать и внешнюю переменную, например:</p>
15 <p>Функция позволяет вызвать и внешнюю переменную, например:</p>
16 var userName = 'Петя'; function showMessage() { var message = 'Привет, моё имя' + userName; alert(message); } showMessage(); // Привет, моё имя Петя<p>Доступ возможен на чтение и запись. Но раз переменная внешняя, изменения видны и снаружи функции:</p>
16 var userName = 'Петя'; function showMessage() { var message = 'Привет, моё имя' + userName; alert(message); } showMessage(); // Привет, моё имя Петя<p>Доступ возможен на чтение и запись. Но раз переменная внешняя, изменения видны и снаружи функции:</p>
17 var userName = 'Петя'; function showMessage() { userName = 'Коля'; // (1) передача во внешнюю переменную, присвоение других данных var message = 'Привет, я ' + userName; alert( message ); } showMessage(); alert( userName ); // Коля, т. к. значение внешней переменной у функции изменилось<p>Однако если бы мы внутри функции в строке (1) объявили свою локальную переменную var userName, все обращения задействовали бы её, то есть внешняя переменная не изменилась бы.</p>
17 var userName = 'Петя'; function showMessage() { userName = 'Коля'; // (1) передача во внешнюю переменную, присвоение других данных var message = 'Привет, я ' + userName; alert( message ); } showMessage(); alert( userName ); // Коля, т. к. значение внешней переменной у функции изменилось<p>Однако если бы мы внутри функции в строке (1) объявили свою локальную переменную var userName, все обращения задействовали бы её, то есть внешняя переменная не изменилась бы.</p>
18 <h2>Параметры, которые можно вызвать функцией</h2>
18 <h2>Параметры, которые можно вызвать функцией</h2>
19 <p>При вызове function ей можно отправить данные для обработки. Например, нижеследующий код выведет 2 сообщения:</p>
19 <p>При вызове function ей можно отправить данные для обработки. Например, нижеследующий код выведет 2 сообщения:</p>
20 function showMessage(from, text) { // параметры from, text from = "** " + from + " **"; // здесь вставляем сложный код оформления alert(from + ': ' + text); } showMessage('Петя', 'Привет!'); showMessage('Петя', 'Как дела?');<p>Помните, что когда код будет передан, параметры скопируются в локальные переменные. Также функцию можно вызвать практически с любым количеством аргументов, а если при вызове параметр не будет передан, он считается равным<strong>undefined</strong>. К примеру, функцию отображения сообщений showMessage(from, text) можно без проблем вызвать, используя один аргумент:</p>
20 function showMessage(from, text) { // параметры from, text from = "** " + from + " **"; // здесь вставляем сложный код оформления alert(from + ': ' + text); } showMessage('Петя', 'Привет!'); showMessage('Петя', 'Как дела?');<p>Помните, что когда код будет передан, параметры скопируются в локальные переменные. Также функцию можно вызвать практически с любым количеством аргументов, а если при вызове параметр не будет передан, он считается равным<strong>undefined</strong>. К примеру, функцию отображения сообщений showMessage(from, text) можно без проблем вызвать, используя один аргумент:</p>
21 <h2>Выбор имени function</h2>
21 <h2>Выбор имени function</h2>
22 <p>При выборе имён в function применяют те же правила, что и когда выбирают имена переменной. Однако следует помнить, что именем должен быть<strong>глагол</strong>, ведь функция - это<strong>действие</strong>. Как правило, в качестве имени используют глагольные префиксы, плюс уточнения.</p>
22 <p>При выборе имён в function применяют те же правила, что и когда выбирают имена переменной. Однако следует помнить, что именем должен быть<strong>глагол</strong>, ведь функция - это<strong>действие</strong>. Как правило, в качестве имени используют глагольные префиксы, плюс уточнения.</p>
23 <p>Функцию, которая что-то показывает, называют show (это лучший вариант для имени):</p>
23 <p>Функцию, которая что-то показывает, называют show (это лучший вариант для имени):</p>
24 showMessage(..) // "показать" сообщение<p>Запуск<strong>function</strong>, которая что-то получает, называют get, вычисляет - calc и т. д.</p>
24 showMessage(..) // "показать" сообщение<p>Запуск<strong>function</strong>, которая что-то получает, называют get, вычисляет - calc и т. д.</p>
25 <p>Примеры, каким именем можно назвать функцию:</p>
25 <p>Примеры, каким именем можно назвать функцию:</p>
26 getAge(..) // get, "получает" возраст calcD(..) // calc, "вычисляет" дискриминант createForm(..) // create, "создаёт" форму checkPermission(..) // check, "проверяет" разрешение, возвращает true/false<p>Использование данного метода названия - удобная штука, ведь, взглянув на функцию, мы примерно поймём, что она делает, какое значение возвращает. И даже если эту функцию написал кто-то другой, вы будете иметь представление о ней.</p>
26 getAge(..) // get, "получает" возраст calcD(..) // calc, "вычисляет" дискриминант createForm(..) // create, "создаёт" форму checkPermission(..) // check, "проверяет" разрешение, возвращает true/false<p>Использование данного метода названия - удобная штука, ведь, взглянув на функцию, мы примерно поймём, что она делает, какое значение возвращает. И даже если эту функцию написал кто-то другой, вы будете иметь представление о ней.</p>
27 <p>Остаётся запомнить, что вне зависимости от метода названия,<strong>одна функция - это одно действие</strong>. Если функция подразумевает поддействия, желательно выделить их в отдельные функции.</p>
27 <p>Остаётся запомнить, что вне зависимости от метода названия,<strong>одна функция - это одно действие</strong>. Если функция подразумевает поддействия, желательно выделить их в отдельные функции.</p>
28 <h2>Функция jQuery() в JavaScript</h2>
28 <h2>Функция jQuery() в JavaScript</h2>
29 <p>Говоря о применении функций в JS, нельзя не упомянуть<strong>jQuery</strong>- известнейшую библиотеку языка программирования<strong>JavaScript</strong>, благодаря которой осуществляется взаимодействие HTML и JavaScript. Работа с ней начинается с вызова основной функции jQuery() либо $(). Данная функция (function) может выполнять разные действия, что зависит от того, какое значение передать в качестве параметров аргумента.</p>
29 <p>Говоря о применении функций в JS, нельзя не упомянуть<strong>jQuery</strong>- известнейшую библиотеку языка программирования<strong>JavaScript</strong>, благодаря которой осуществляется взаимодействие HTML и JavaScript. Работа с ней начинается с вызова основной функции jQuery() либо $(). Данная функция (function) может выполнять разные действия, что зависит от того, какое значение передать в качестве параметров аргумента.</p>
30 <h2>Какие задачи решаются с помощью этой функции?</h2>
30 <h2>Какие задачи решаются с помощью этой функции?</h2>
31 <p>В зависимости от параметров возможно выполнение следующих действий: - поиск на основе селектора элементов в DOM-дереве и их возвращение в виде объекта; - оборачивание DOM-элементов, указанных в качестве параметров аргумента, в объект<strong>jQuery</strong>; - создание DOM-элементов в памяти с помощью HTML-строки, переданной в качестве аргумента функции; - выполнение указанной функции после того, как DOM-дерево окончательно загрузится браузером; - оборачивание простого<strong>JavaScript</strong>-объекта, содержащего ноль либо больше пар "ключ-значение" в объект jQuery; - клонирование объекта (актуально, если его нужно передать в качестве параметров функции).</p>
31 <p>В зависимости от параметров возможно выполнение следующих действий: - поиск на основе селектора элементов в DOM-дереве и их возвращение в виде объекта; - оборачивание DOM-элементов, указанных в качестве параметров аргумента, в объект<strong>jQuery</strong>; - создание DOM-элементов в памяти с помощью HTML-строки, переданной в качестве аргумента функции; - выполнение указанной функции после того, как DOM-дерево окончательно загрузится браузером; - оборачивание простого<strong>JavaScript</strong>-объекта, содержащего ноль либо больше пар "ключ-значение" в объект jQuery; - клонирование объекта (актуально, если его нужно передать в качестве параметров функции).</p>
32 <p>Если параметры не указывать, то function возвращает пустой<strong>jQuery-объект</strong>.</p>
32 <p>Если параметры не указывать, то function возвращает пустой<strong>jQuery-объект</strong>.</p>
33 <p>Для примера рассмотрим функцию jQuery(html,attributes) и функцию jQuery(html[,ownerDocument]).</p>
33 <p>Для примера рассмотрим функцию jQuery(html,attributes) и функцию jQuery(html[,ownerDocument]).</p>
34 <h2>Функция jQuery(html,attributes)</h2>
34 <h2>Функция jQuery(html,attributes)</h2>
35 <p>Function служит для создания DOM-элемента с параметрами. Необходимый элемент указывается в первом аргументе с помощью<strong>HTML-строки</strong>. Атрибуты к нему указываются во втором аргументе с помощью объекта<strong>JavaScript (PlainObject)</strong>.</p>
35 <p>Function служит для создания DOM-элемента с параметрами. Необходимый элемент указывается в первом аргументе с помощью<strong>HTML-строки</strong>. Атрибуты к нему указываются во втором аргументе с помощью объекта<strong>JavaScript (PlainObject)</strong>.</p>
36 <p>Данный способ вызова функции имеет два параметра: • html - обязательный параметр типа<strong>htmlString</strong>, содержит DOM-элемент; • attributes - необязательный параметр типа<strong>PlainObject</strong>. Это объект, содержащий атрибуты, методы и события, которые нужно передать создаваемому элементу.</p>
36 <p>Данный способ вызова функции имеет два параметра: • html - обязательный параметр типа<strong>htmlString</strong>, содержит DOM-элемент; • attributes - необязательный параметр типа<strong>PlainObject</strong>. Это объект, содержащий атрибуты, методы и события, которые нужно передать создаваемому элементу.</p>
37 <p>Примечание: необходимо, чтобы HTML-строка начиналась с &lt;, а не с текстовых узлов. Что касается объекта PlainObject, то имя "class" необходимо заключить в кавычки (class - зарезервированное слово JavaScript). Имя "<strong>className</strong>" использовать тоже нельзя, ведь это имя относится к свойству, а не к атрибуту DOM.</p>
37 <p>Примечание: необходимо, чтобы HTML-строка начиналась с &lt;, а не с текстовых узлов. Что касается объекта PlainObject, то имя "class" необходимо заключить в кавычки (class - зарезервированное слово JavaScript). Имя "<strong>className</strong>" использовать тоже нельзя, ведь это имя относится к свойству, а не к атрибуту DOM.</p>
38 <h2>Функция jQuery(html[,ownerDocument])</h2>
38 <h2>Функция jQuery(html[,ownerDocument])</h2>
39 <p>Эта function позволяет создавать DOM-узлы в памяти, что называется "на лету", используя HTML-строку, которую можно передать в качестве аргумента. Способ (метод) вызова функции даёт возможность запустить её с помощью двух параметров: -<strong>html</strong>- относится к обязательному параметру типа htmlString. По сути, это строка, содержащая HTML-код; -<strong>ownerDocument</strong>- относится к необязательным параметрам типа document.</p>
39 <p>Эта function позволяет создавать DOM-узлы в памяти, что называется "на лету", используя HTML-строку, которую можно передать в качестве аргумента. Способ (метод) вызова функции даёт возможность запустить её с помощью двух параметров: -<strong>html</strong>- относится к обязательному параметру типа htmlString. По сути, это строка, содержащая HTML-код; -<strong>ownerDocument</strong>- относится к необязательным параметрам типа document.</p>
40 <p>Принцип работы<strong>функции</strong>: - анализируется значение параметров; - если он выглядит, как<strong>HTML-код</strong>, функция обрабатывает его с помощью метода $.parseHTML(); - после обработки запускается процесс создания DOM-узлов (применяется браузерный механизм .innerHTML); - в конечном итоге функция возвращает объект<strong>jQuery</strong>, включающий созданные DOM-узлы.</p>
40 <p>Принцип работы<strong>функции</strong>: - анализируется значение параметров; - если он выглядит, как<strong>HTML-код</strong>, функция обрабатывает его с помощью метода $.parseHTML(); - после обработки запускается процесс создания DOM-узлов (применяется браузерный механизм .innerHTML); - в конечном итоге функция возвращает объект<strong>jQuery</strong>, включающий созданные DOM-узлы.</p>
41 <p>Если пользоваться только одним параметром, элементы создаются для текущего документа. Если хотите создать элементы для другого документа, нужно передавать и 1-й, и 2-й параметры.</p>
41 <p>Если пользоваться только одним параметром, элементы создаются для текущего документа. Если хотите создать элементы для другого документа, нужно передавать и 1-й, и 2-й параметры.</p>
42 <h2>Ссылки в JS</h2>
42 <h2>Ссылки в JS</h2>
43 <p>В заключении поговорим о ссылке в<strong>JavaScript</strong>. Под ссылкой будем понимать видимую часть текста или кода, нажатие на которую приведёт к переходу по ней. Рассмотрим три основных метода, в результате применения которых образуется кликабельная ссылка.</p>
43 <p>В заключении поговорим о ссылке в<strong>JavaScript</strong>. Под ссылкой будем понимать видимую часть текста или кода, нажатие на которую приведёт к переходу по ней. Рассмотрим три основных метода, в результате применения которых образуется кликабельная ссылка.</p>
44 <ul><li>Самый простой метод, позволяющий осуществлять вызов - вывод alert в ссылке. Пример такой ссылки (ссылку можно запустить без проблем из любого браузера):</li>
44 <ul><li>Самый простой метод, позволяющий осуществлять вызов - вывод alert в ссылке. Пример такой ссылки (ссылку можно запустить без проблем из любого браузера):</li>
45 </ul>&lt;a href = "javascript:alert('Привет Мир!');"&gt;Вызов ссылки&lt;/a&gt;<ul><li>Второй метод вызова ссылки имеет более сложную конструкцию. В этом случае ссылку можно сделать с помощью функции document.write(). А оформить такую ссылку можно следующим образом:</li>
45 </ul>&lt;a href = "javascript:alert('Привет Мир!');"&gt;Вызов ссылки&lt;/a&gt;<ul><li>Второй метод вызова ссылки имеет более сложную конструкцию. В этом случае ссылку можно сделать с помощью функции document.write(). А оформить такую ссылку можно следующим образом:</li>
46 </ul>&lt;script type="text/javascript"&gt;document.write('&lt;a href="http://otus.ru/"&gt;текст ссылки&lt;/a&gt;');&lt;/script&gt;<ul><li>В качестве третьего метода продемонстрируем ещё более усложнённый вариант. Ссылка и её вызов осуществляются с помощью переменных, т. к. сама ссылка и её текст выведены в отдельные переменные:</li>
46 </ul>&lt;script type="text/javascript"&gt;document.write('&lt;a href="http://otus.ru/"&gt;текст ссылки&lt;/a&gt;');&lt;/script&gt;<ul><li>В качестве третьего метода продемонстрируем ещё более усложнённый вариант. Ссылка и её вызов осуществляются с помощью переменных, т. к. сама ссылка и её текст выведены в отдельные переменные:</li>
47 </ul>&lt;script type="text/javascript"&gt; desiredText = desiredLink = 'http://otus.ru/'; document.write('&lt;a href="'+desiredLink+'"&gt;'+desiredText+'&lt;/a&gt;'); &lt;/script&gt;<p>Кроме того, можно вызывать ссылку через таблицу, div, ячейку таблицы и путём использования другого метода. Собственно говоря, использование этих методов для передачи ссылок - довольно странное занятие, если вспомнить, что у нас есть простые, эффективные и всем понятные решения с html и php.</p>
47 </ul>&lt;script type="text/javascript"&gt; desiredText = desiredLink = 'http://otus.ru/'; document.write('&lt;a href="'+desiredLink+'"&gt;'+desiredText+'&lt;/a&gt;'); &lt;/script&gt;<p>Кроме того, можно вызывать ссылку через таблицу, div, ячейку таблицы и путём использования другого метода. Собственно говоря, использование этих методов для передачи ссылок - довольно странное занятие, если вспомнить, что у нас есть простые, эффективные и всем понятные решения с html и php.</p>
48  
48