Задать вопрос
@Misha9914

Не могу понять почему выдает ошибку (.length)?

Пытаюсь написать игру "Виселица":
var pickWord = function() {
    //Возвращает случайно выбранное слово
    var words = ["чумазоид", "коала", "колобок", "чебурек"];
    var word = words[Math.floor(Math.random() * words.length)];
    return word
};
var setupAnswerArray = function(word) {
    // Возвращает итоговый массив для заданного слова
    var answerArray = [];
    for (var i = 0; i <word.length; i++) {
        answerArray[i] = "_";
    }
    return answerArray;
};
var showPlayerProgress = function(answerArray) {
    // С помощью alert отображает текущее состояние игры
    alert(answerArray.join(" "));
};
var getGuess = function() {
    return prompt("Введите букву или нажмите отмена для выхода")
};
var updateGameState = function(guess, word, answerArray) {
    var apperance = 0;
    for (var j = 0; j <word.length; j++) {
        if (word[j] === guess) {
            answerArray[j] = guess;
            apperance++;
        }
    }
    return apperance
};
var showAnswerandCongratulatePlayer = function(answerArray) {
    showPlayerProgress(answerArray);
    alert("Отлично, было загаданно слово" + answerArray.join(""))
};
// word: загаданное число
var word = pickWord();
// answerArray: итоговый массив
var answerArray = setupAnswerArray();
// remainingLetters: сколько букв осталось угадать
var remainingLetters = word.length;
while (remainingLetters > 0) {
    showPlayerProgress(answerArray);
    // guess: ответ игрока
    var guess = getGuess();
    if (guess === null) {
        break;
    } else if (guess.length !== 1) {
        alert("Пожалуйста введите одиночную букву.");
    } else {
        // correctGuesses: количество открытых букв
        var correctGuesses = updateGameState(guess, word, answerArray);
        remainingLetters -= correctGuesses;
    }
}
showAnswerandCongratulatePlayer(answerArray);


после запуска выдает ошибку
VM189:10 Uncaught TypeError: Cannot read property 'length' of undefined
    at setupAnswerArray (<anonymous>:10:22)
    at <anonymous>:39:19

5e43d159cafc2944688870.png
  • Вопрос задан
  • 567 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
Seasle
@Seasle Куратор тега JavaScript
Правку предложил. После правки весь фокус тут, на основе данной ошибки конечно.
// word: загаданное число
var word = pickWord();
// answerArray: итоговый массив
var answerArray = setupAnswerArray();


Надо вызывать setupAnswerArray с параметром word: var answerArray = setupAnswerArray(word);. После исправления код работает.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@AleksRap
Добавьте код в песочницу или оберните тегом code. Когда вставил код в свою ide - найдена куча неправильно расставленных фигурных скобок. Код что вы прислали - абсолютно нерабочий
Ответ написан
на 11 строке конструкция for не правильная.
for (var i=0; i answerArray[i]="_";
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы