Как я могу получить доступ к функциям в возвращаемом значении этого закрытия

Я пытаюсь вызвать любую из функций в возвращаемом значении этого закрытия, но я не могу:

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!

Пожалуйста, покажите, как вы пытаетесь вызвать функции.

Heretic Monkey 10.06.2019 18:31

Я обновил вопрос. @hereticmonkey

George Udosen 10.06.2019 18:37

Чтобы вернуть значение из функции, используйте ключевое слово return...

Heretic Monkey 10.06.2019 18:38
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
3
40
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваша функция работает, но ничего не возвращает. Вы должны использовать 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.

George Udosen 10.06.2019 18:41

@GeorgeUdosen, если вы хотите получить значения из других функций, вы можете, например, просто сделать return x после строки x++.

TKoL 10.06.2019 18:43

вы также можете сделать return ++x;, но учтите, что вы получите другой результат, если сделаете return x++;

TKoL 10.06.2019 18:44

Да, я знаю, но не понял этого в начале, спасибо!

George Udosen 10.06.2019 18:44

Другие вопросы по теме