Допустим, мы определили этот function
в глобальном масштабе:Заключительная часть яваскрипта затворов я стил не понимаю
function createCounter() {
var counter = 0;
function increment() {
counter = counter + 1;
console.log("Number of events: " + counter);
}
return increment;
}
В большинстве примеров, объясняющих затворов я вижу исполняющего:
createCounter();
из глобальный охват просто вернет внутреннюю функцию:
function increment() {
counter = counter + 1;
console.log("Number of events: " + counter);
}
Теперь, е, из-за этой линии в createCounter
объявлении функции
return increment;
Так что мой вопрос, почему это:
var counter1 = createCounter();
counter1();
Number of events: 1 //result
Наконец получить функцию для работы?
По существу не counter1
и createCounter
оба указателя на эту внутреннюю функцию, которые существуют в глобальном масштабе?
Возможно, лучший способ задать вопрос, почему именно counter1()
работает, а не только возвращает внутреннюю функцию, например, createCounter
?
* «По существу не' counter1' и 'createCounter' как указатели на эту внутреннюю функцию» * No. 'counter1' относится к' приращению функции() 'который явно отличается от функции function createCounter()'. Вы можете легко проверить это, сравнив их: 'counter1 === createCounter' является' false'. Иначе говоря: 'createCounter' возвращает новую/другую функцию, она не возвращается сама. –