Правильно я понял эти замыкания?
function a(){
var count=0; //окружения для функции b
function b(){
count=count+1 //использовали свободную переменную
return count; //замыкание
}
}
Замыкание-это просто использование свободной переменной (из окружения) во вложенной функции?
Что то мне подсказывает, что рассуждаю я как то не так
JavaScript
Зачем нужны замыкание в JavaScript? И что это такое?
Чтобы сохранить локальную переменную после завершения функции и использовать при запуске 2-ого, 3-его, n-ого раза.
Владимир Василина
немного не понял, т. е. это нужно чтобы просто использовать переменную, путём вызова функции, при этом чтобы к ней нельзя было обратиться, а только вызывать?
Замыкание - это одна из основ JavaScript. Другие - это прототипы, функции первого класса, интроспекция, ещё слабая динамическая типизация.
Если совсем простым языком, то замыкание - это функция, в которой есть доступ к переменным из вне функции, при этом они явно (через параметры) в функцию не передаются.
Если совсем простым языком, то замыкание - это функция, в которой есть доступ к переменным из вне функции, при этом они явно (через параметры) в функцию не передаются.
Здесь написали много умных слов, но никто не обратил внимание на то, что твой пример НЕ ВЕРЕН. тебе нужно ВЕРНУТЬ внутреннюю функцию b, а не вызывать её внутри функции a, в противном случае замыкание не будет создано.
---------------------------------------------------------------------------------------------------------------------------
function a(){
var count=0; //окружения для функции b
function b(){
count=count+1; //использовали свободную переменную
return count; //замыкание
}
return b;
}
var counter = a();
counter(); // 1
counter(); // 2
counter(); // 3
counter(); // 4
counter(); // 5
p.s. почитай https://stackoverflow.com/questions/111102/how-do-javascript-closures-work
---------------------------------------------------------------------------------------------------------------------------
function a(){
var count=0; //окружения для функции b
function b(){
count=count+1; //использовали свободную переменную
return count; //замыкание
}
return b;
}
var counter = a();
counter(); // 1
counter(); // 2
counter(); // 3
counter(); // 4
counter(); // 5
p.s. почитай https://stackoverflow.com/questions/111102/how-do-javascript-closures-work
в корне не так рассуждаешь. ибо ничего реального ты не пишешь и целей в обучении нет. поэтому не обижайся, но тебе вообще ничего не нужно на самом деле, до тех пор, пока не поймешь что нужно и не будешь именно им заниматься.
у меня все наоборот. часто использую какую-то фичу и только потом узнаю, как она называется.
давным-давно я умел делать вот так:
window.onload = function () {
...
button.onclick = function() {
...
};
};
и только потом узнал, что внутренняя функция, та, которая обрабатывает onclick, это и есть замыкание. зачем нужно? а как иначе? объявить ту же функцию вне onload? это не то - в этом случае кода больше, а мне допустим быстро надо набросать кнопок
я понимаю, что я сейчас странные вещи говорю. 99% обучающихся тоже, как и ты, слабо понимают чего хотят, и не видят в этом проблемы, потому что просто не знают как работает мозг.
а я вот в свое время попробовал иначе, и поверь, результат того стоит
у меня все наоборот. часто использую какую-то фичу и только потом узнаю, как она называется.
давным-давно я умел делать вот так:
window.onload = function () {
...
button.onclick = function() {
...
};
};
и только потом узнал, что внутренняя функция, та, которая обрабатывает onclick, это и есть замыкание. зачем нужно? а как иначе? объявить ту же функцию вне onload? это не то - в этом случае кода больше, а мне допустим быстро надо набросать кнопок
я понимаю, что я сейчас странные вещи говорю. 99% обучающихся тоже, как и ты, слабо понимают чего хотят, и не видят в этом проблемы, потому что просто не знают как работает мозг.
а я вот в свое время попробовал иначе, и поверь, результат того стоит
Владимир Василина
Я скинул бессмысленный код, который подходит под мой вопрос
Тут для каких это целей и т. п, думаю никого не интересует (я и не начал рассусоливать)
P.s. Хоть я немного и недопонял о замыканиях, твой ответ какой то мутноватый
Тут для каких это целей и т. п, думаю никого не интересует (я и не начал рассусоливать)
P.s. Хоть я немного и недопонял о замыканиях, твой ответ какой то мутноватый
Похожие вопросы
- Зачем нужен prototype в JavaScript?
- Зачем нужны классы в JavaScript?
- Нужна помощь по javaScript
- Зачем нужны Циклы в JavaScript? Бесконечный цикл который не делает ничего.
- Зачем нужен return в JavaScript?
- Я не понимаю для чего нужен return в javascript. Да он возврошает число, но пффф в контексте какой от него толк???
- Я не понимаю... Зачем нужен this в javascript?
- Javascript Что такое замыкания?
- Есть ли аналоги JavaScript?
- С чего начать учить JavaScript?