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

Я создаю игру, в которой компьютер пытается угадать номер пользователя на основе обратной связи с пользователем, например, слишком высокой или слишком низкой.Я использую бинарный поиск.Функции работают должным образом, однако каждый раз, когда нажимаются кнопки, код сбрасывается, чтобы исходный список составлял от 1 до 100, делая предположение 50 вместо запоминания нового списка и предположения, определенных в моих функциях.

var list = new Array();
for (i = 0; i <= 100; i++) {
  list.push(i)
}
//console.log(list)
// List is intially an empty array (list). The 
// for loop generates integers from
// 0 to 100 and pushes them into the array.

var guess = list[Math.floor((list.length / 2))];
console.log(guess);


var toolow = function(guess) {
  while (list.includes(guess) == true) {
    list.shift()
  };
  var guess = list[Math.floor((list.length / 2) - 1)];
  console.log(list);
  console.log(guess)
}

// toolow(guess)

var toohigh = function(guess) {
  var last = parseInt(list.length);
  while (list.includes(guess) == true) {
    list.pop()
  };
  var guess = list[Math.round(list.length / 2)];
  console.log(list);
  console.log(guess)
}

// toohigh(guess)
<h1> Guess Your Number </h1>
<button id="TooLow" onclick="toolow(guess);"> Too Low</button>
<button id="TooHigh" onclick="toohigh(guess);">Too High</button>

1 Ответ

0 голосов
/ 20 сентября 2019

чрезмерное использование переменной guess вызывает всевозможные проблемы

  1. нет необходимости передавать догадки от щелчка мышью функции
  2. не объявлять предположение о переменнойвнутри функций

и вуаля - ваш код работает сейчас

var list = new Array();
for (i = 0; i <= 100; i++) {
  list.push(i)
}
//console.log(list)
// List is intially an empty array (list). The 
// for loop generates integers from
// 0 to 100 and pushes them into the array.

var guess = list[Math.floor((list.length / 2))];
console.log(guess);


var toolow = function() {
  while (list.includes(guess) == true) {
    list.shift()
  };
  guess = list[Math.floor((list.length / 2) - 1)];
  console.log(list);
  console.log(guess)
}

// toolow(guess)

var toohigh = function() {
  var last = parseInt(list.length);
  while (list.includes(guess) == true) {
    list.pop()
  };
  guess = list[Math.round(list.length / 2)];
  console.log(list);
  console.log(guess)
}

// toohigh(guess)
<h1> Guess Your Number </h1>
<button id="TooLow" onclick="toolow();"> Too Low</button>
<button id="TooHigh" onclick="toohigh();">Too High</button>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...