Как увеличить переменную, затем сохранить указанную переменную, а затем продолжить добавление к ней? - PullRequest
0 голосов
/ 02 февраля 2019

Я работаю над небольшим диссон-ботом в JS, и все, что мне нужно, это когда произнесется определенная команда, она будет увеличивать число (0 -> 1), а затем будет помнить, что она увеличила это число, так чтопри следующем произнесении команды она снова увеличится (1 -> 2).Извините, что я довольно новичок в JS, но я поняла это понемногу.

Из-за моих ограниченных знаний все, что я пытался, это просто объявить «num», а затем добавить его по одному.И затем я попытался объявить num как 0, после того как команда (которая является «песней» для заполнителей), она увеличивается до единицы, затем, когда мы повторяем команду снова, она сбрасывается обратно до 0, затем увеличивается до1.

if(command === "song") {
    var num = 0
    num = num + 1;
    return message.channel.send(num);
}

Я хочу, чтобы оно продолжало увеличиваться при каждом произнесении команды ex (я говорю «песня», бот говорит 1, я снова говорю «песня», бот говорит 2 и т. Д.).) * +1010 *

Ответы [ 3 ]

0 голосов
/ 02 февраля 2019

Вы должны держать num во внешней области видимости, чтобы избежать сброса каждый раз.

Ниже приведен пример для понимания

let num = 0 

function command(input){
   if( input === "song") {
        num++;
      } 
  return num
}

console.log(command('song'))
console.log(command('blah'))
console.log(command('song'))
0 голосов
/ 02 февраля 2019

Вы должны отодвинуть инициализацию переменной num от тела if и поместить ее вне функции, содержащей if, как в ответе Code Maniac.

EDITED

Объединяя исходный пример кода и пример кода, предоставленный Code Maniac, вы можете попробовать что-то вроде этого:

function init() {
  var num = 0;
  return function(command) {
    console.log(command);
    if(command === "song") {
      num = num + 1;
      //return message.channel.send(num); 
      console.log(num);
    }
  }
}

var commandHandler = init();

commandHandler('song');
commandHandler('song');
commandHandler('no-song');
commandHandler('song');
commandHandler('no-song');
commandHandler('song');
0 голосов
/ 02 февраля 2019

Simple.Прежде всего, объявите num в верхней части вашего файла JavaScript, чтобы он был доступен по всему миру:

var num = 0;

Затем в вашем выражении if просто используйте num++:

if (command === "song") {
    num++;
    return message.channel.send(num);
}

(Вышеуказанный синтаксис - это оператор приращения , в частности, оператор постинкремента).

Вот упрощенная демонстрация:

var num = 0;

function test(command) {
  if (command === "song") {
    num++;
  }
  return num;
}

console.log(test("song"));
console.log(test("not a song"));
console.log(test("song"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...