Проблема в том, что этот код объявляет userChoice
дважды, второй var
на нем не нужен:
var arrayList = [];
var userChoice = prompt('What would you like to do?');
// Array list is empty array
while (userChoice !== "quit") {
if (userChoice === "new") {
var newTodo = prompt('Enter a new todo');
arrayList.push(newTodo);
} else if (userChoice === "list") {
console.log(arrayList);
}
var userChoice = prompt('What would you like to do?');
// ^^^---------------------------------------------------- here
}
С var
это не имело значения, потому что var
имеет область действия функции (или глобальную область, если используется вне функции), и множественные объявления игнорируются, но это имеет значение с let
, поскольку let
равно block-scoped , поэтому объявление нового userChoice
внутри блока затеняет внешний. (Множественные объявления с let
являются ошибкой в одной и той же области видимости, поскольку это не имеет смысла, и допускать это может привести к сложным вещам.)
Просто удалите эту вторую var
и замените остальные var
на let
(или вы можете использовать const
для arrayList
и newTodo
, если только код, который не показан, назначает новый массив для arrayList
позже):
const arrayList = []; // Or let
let userChoice = prompt('What would you like to do?');
// Array list is empty array
while (userChoice !== "quit") {
if (userChoice === "new") {
const newTodo = prompt('Enter a new todo'); // Or let if you prefer
arrayList.push(newTodo);
} else if (userChoice === "list") {
console.log(arrayList);
}
userChoice = prompt('What would you like to do?');
}