Я пытаюсь вызвать любую из функций в возвращаемом значении этого закрытия, но я не могу:
function count() {
var x = 0;
return {
increment: function() { ++x; },
decrement: function() { --x; },
get: function() { return x; },
reset: function() { x = 0; }
}
}
Как я могу вызвать, скажем, «increment ()», чтобы он возвращал увеличенное значение «x»? Я пытался:
var l = count();, затем l.increment(); и возвращается undefined!Я обновил вопрос. @hereticmonkey
Чтобы вернуть значение из функции, используйте ключевое слово return...



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Ваша функция работает, но ничего не возвращает. Вы должны использовать get(), чтобы получить текущее значение:
function count() {
var x = 0;
return {
increment: function() { ++x; },
decrement: function() { --x; },
get: function() { return x; },
reset: function() { x = 0; }
}
}
let test= count();
console.info(test.get());
test.increment();
console.info(test.get());
test.increment();
console.info(test.get());
test.decrement();
console.info(test.get());
test.reset();
console.info(test.get());Но вы можете вернуть новое значение в каждой функции:
function count() {
var x = 0;
return {
increment: function() { return ++x; },
decrement: function() { return --x; },
get: function() { return x; },
reset: function() { return x = 0; }
}
}
let test= count();
console.info(test.get());
console.info(test.increment());
console.info(test.increment());
console.info(test.increment());
console.info(test.decrement());
console.info(test.reset());Хорошо, я вижу, я не знал, что другие функции действительно работают, и мне нужно было получить значение с помощью функции get.
@GeorgeUdosen, если вы хотите получить значения из других функций, вы можете, например, просто сделать return x после строки x++.
вы также можете сделать return ++x;, но учтите, что вы получите другой результат, если сделаете return x++;
Да, я знаю, но не понял этого в начале, спасибо!
Пожалуйста, покажите, как вы пытаетесь вызвать функции.