Эта статья в основном вводит обычные функции, анонимные функции и функции закрытия
1. Введение в обычные функции
1.1 Пример
Кода -копия выглядит следующим образом:
Функция shopeame (name) {
оповещение (имя);
}
1.2 Перезапись функций с тем же именем в JS
В JS функции не перегружены. Они определяют функции с тем же именем функции и различными подписями параметров. Последующие функции будут переопределять предыдущие функции. При вызове будут вызваны только следующие функции.
Кода -копия выглядит следующим образом:
var n1 = 1;
функция добавить (value1) {
вернуть N1 + 1;
}
Alert (add (n1)); // вызывается следующая функция, выход: 3
Функция add (value1, value2) {
возвращаемое значение1 + 2;
}
Alert (add (n1)); // Выход: 3
1.3 Аргументы объект
Аргументы аналогичны параметрам C#, эксплуатационные параметры переменной: количество параметров, передаваемых в функции, больше, чем количество параметров во время определения.
Кода -копия выглядит следующим образом:
Функция showerames (name) {
оповещение (имя); // Zhang San
for (var i = 0; i <arguments.length; i ++) {
Alert (аргументы [i]); // Zhang San, Li Si, Wang wu
}
}
Shodedames ('Zhang San', 'li Si', 'wang wu');
1.4 Значение диапазона по умолчанию функции
Если в функции не указывается возвратное значение, возвращение по умолчанию «не определен»
Кода -копия выглядит следующим образом:
функция showmsg () {
}
Alert (showmsg ()); // Выход: не определен
2. Анонимные функции
2.1 переменные анонимные функции
2.1.1 Описание
Функции могут быть назначены переменным и событиям.
2.1.2 Пример
Кода -копия выглядит следующим образом:
// переменная анонимная функция, левая сторона может быть переменными, событиями и т. Д.
var anonymousnormal = function (p1, p2) {
предупреждение (P1+P2);
}
Анонимнормальный (3,6); // Выход 9
2.1.3 Применимые сценарии
① Избегайте загрязнения имени функции. Если вы сначала объявите функцию с именем, а затем назначите ее переменной или событию, это вызовет злоупотребление именем функции.
2.2 Анонимная функция без имени
2.2.1 Описание
То есть, когда функция объявлена, параметры следуют. Когда синтаксис JS анализирует эту функцию, код внутри выполняется немедленно.
2.2.2 Пример
Кода -копия выглядит следующим образом:
(function (p1) {
предупреждение (P1);
}) (1);
2.2.3 Применимые сценарии
① Выполните только один раз. Если браузер загружается, ему нужно только выполнять функции, которые не выполняются позже.
3. Функция закрытия
3.1 Описание
Предположим, что функция A объявляет функцию B внутренне, функция B относится к переменной, отличной от функции B, и возвращаемое значение функции A является ссылкой на функцию B. Затем функция B является функцией закрытия.
3.2 Пример
3.2.1 Пример 1: Глобальные ссылки и локальные ссылки
Кода -копия выглядит следующим образом:
функция funa () {
var i = 0;
function funb () {// Фунна функции закрытия
i ++;
Блюдо (я)
}
вернуть FUNB;
}
var allshowa = funa (); // Глобальная переменная Ссылка: кумулятивный выход 1, 2, 3, 4 и т. Д.
function partshowa () {
var showa = funa (); // локальная переменная Ссылка: только вывод 1
showa ();
}
Allshowa - это глобальная переменная, которая ссылается на функцию Funa. Повторите Allshowa () и выведут накопленные значения, такие как 1, 2, 3, 4.
Выполните функцию partshowa (), потому что только локальная переменная Showa объявляется внутренне для ссылки на Funa. После исполнения ресурсы, занятые Showa, выпускаются из -за отношения с масштабами.
Ключом к закрытию является применение: ресурсы, занятые глобальными переменными, будут выпущены только после того, как страница будет изменена или браузер закрыт. Когда var allshowa = funa (), это эквивалентно Allshowa, ссылаясь на Funb (), так что ресурсы в Funb () не переработаны GC, поэтому ресурсы в funa () не будут.
3.2.2 Пример 2: Функция закрытия параметра
Кода -копия выглядит следующим образом:
функция funa (arg1, arg2) {
var i = 0;
Функция Funb (step) {
i = i + шаг;
Блюдо (я)
}
вернуть FUNB;
}
var allshowa = funa (2, 3); // звонок - funa arg1 = 2, arg2 = 3
Allshowa (1); // Вызов - это funb step = 1, выход 1
Allshowa (3); // Вызов - это funb setp = 3, выход 4
3.2.3 Пример 3: Обмен переменные в родительской функции Funa
Кода -копия выглядит следующим образом:
функция funa () {
var i = 0;
функция funb () {
i ++;
Блюдо (я)
}
allshowc = function () {// allshowc относится к анонимным функциям и переменной обли
i ++;
Блюдо (я)
}
вернуть FUNB;
}
var allshowa = funa ();
var allshowb = funa (); // allshowb ссылки Funa, Allshowc Repinds Internal и Variable Is Is с Allshowb
3.3 Применимые сценарии
① Убедитесь, что безопасность переменных внутри функции Funa, потому что внешний вид не может напрямую доступ к переменным Funa.
У вас есть идеи о функции функции JavaScript? Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение.