Так называемое закрытие должно ссылаться на: внутреннюю функцию, которая считывает переменные, отличные от текущей функции, то есть контекстной среды, в которой она была создана.
Кода -копия выглядит следующим образом:
функция hello () {
var char = "Привет, мир";
функция print () {
console.log (char);
};
return print ();
}
Следует отметить, что функция печати здесь относится к переменной ChAR внешней функции Hello, поэтому мы можем вернуть
Кода -копия выглядит следующим образом:
Привет, мир
В некотором смысле эта функция должна быть отнесена к объему. Конечно, мы не имеем возможности получить доступ напрямую, если только нет ошибки, когда мы объявляем эту переменную. нравиться
Кода -копия выглядит следующим образом:
функция hello () {
char = "Привет, мир";
функция print () {
console.log (char);
};
return print ();
}
Просто потому, что есть var отсутствует.
Кода -копия выглядит следующим образом:
Здесь привет становится закрытием. Закрытие - это специальный объект. Он состоит из двух частей: функции и среды, в которой создается функция. Окружающая среда состоит из любых локальных переменных в области прицела при создании закрытия.
Закрытие JavaScript и это
Следует отметить, что при чтении этого и аргументах могут быть проблемы.
Кода -копия выглядит следующим образом:
функция hello () {
this.char = "Привет, мир";
функция output () {
char = "Я не привет миру";
console.log (this.char);
};
вернуть выход ();
}
Конечно, этот пример недостаточно подходит. Итак, нам нужен дополнительный пример, чтобы объяснить эту проблему. Ниже приведен пример из «JavaScript Advanced Programming», чтобы проиллюстрировать эту проблему.
Кода -копия выглядит следующим образом:
var name = "окно";
var object = {
Имя: «Мой объект»,
getNamefunc: function () {
return function () {
вернуть это. name;
}
}
};
object.getNamefunc () () ()
Но это использование действительно, и решение состоит в том, чтобы сохранить временную переменную, которая, как упоминалось в предыдущей статье «Некоторые знания об этом в JavaScript».
Кода -копия выглядит следующим образом:
var name = "окно";
var object = {
Имя: «Мой объект»,
getNamefunc: function () {
var that = это;
return function () {
вернуть это.
}
}
};
object.getNamefunc () () ()
Закрытие JavaScript и переменные чтения и записи
Стоит отметить, что если мы плохо обрабатываем наши переменные, мы также можем их изменить.
Кода -копия выглядит следующим образом:
функция hello () {
var char = "Привет, мир";
возвращаться{
SET: function (String) {
вернуть char = string;
},
print: function () {
Console.log (char)
}
}
}
var говорит = hello ();
say.set ('new Hello, World')
say.print () // новый Hello World
Закрытие и производительность JavaScript
Цитата MDC
Кода -копия выглядит следующим образом:
Если закрытие не требуется для определенных специальных задач, неразумно создавать функции в других функциях без необходимости, поскольку закрытие оказывает негативное влияние на производительность скрипта, включая скорость обработки и потребление памяти.
В статье также упоминалась.
Кода -копия выглядит следующим образом:
Например, при создании нового объекта или класса методы обычно должны быть связаны с прототипом объекта, а не определяются в конструкторе объекта. Причина в том, что это приведет к переназначению метода один раз каждый раз, когда называется конструктор (то есть для создания каждого объекта).