Замыкание - не понятен return.
При использовании "замыкания" в js в консоль ничего не выводится. Вроде как return завершает выполнение функции, тогда как реализовать замыкание???
<!DOCTYPE html>
<html>
<head>
<title>Мой сайт</title>
<meta charset="UTF-8">
<script src="jsa.js"></script>
</head>
<body>
</body>
</html>
function get() {
var a = 0;
return function abcv() {
a++;
}
console.log(a);
}
get();
Везде искал, не могу понять в чем проблема, надеюсь на помощь, заранее спасибо!) |
Auroar,
Пожалуйста, отформатируйте свой код! Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [js] ... ваш код... [/js] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
Auroar,
function get() {
var a = 0;
return function abcv() {
a++;
console.log(a);
}
}
var b = get();
b();
b();
|
Принцип замыканий
Спасибо большое) но непонятно почему мы не можем написать console.log(); в function get(){}, ничего не выведется, но почему, почему нужно именно в function abcv(){}? И для чего в конце присваивать функцию переменной?
|
.
Цитата:
Цитата:
|
Почти все понял
Первое понял, спасибо), последнее не пойму:
После функции abcv в функции get "a" становится равна 1? Если да - то после повторного вызова функции в начале ее указана что a = 0, то-есть она обнуляться должна, почему этого не происходит?
function get() {
var a = 0;
return function abcv() { //Возвращаем 1
a++;
console.log(a);
}
// a = 1 (по идеи)
}
// Теперь a в get() равна 1 (По идеи)
/* ГЛАВНОЕ: Получается когда мы делаем присвоение get() к b мы присваиваем функцию где a = 1, но в начале get() у нас все ровно a присваевается(=) к 0, вот и не пойму. Если при выполнении функции a сразу становится 0. Как оно тогда работает?
*/
var b = get();
b();
b();
|
Цитата:
|
| Часовой пояс GMT +3, время: 03:15. |