Как отмечали другие
userInput === 'rock' || 'paper' || 'scissors' ? return getUserChoice : console.log('please enter a valid entry');
Недействительный JavaScript.Это даже не совсем допустимая конструкция.
Тернарные операторы предназначены для выбора A или B на основе условия.
if (condition) {
return A;
} else {
return B;
}
Использование троичных операторов, это
return condition ? A : B;
но вы возвращаете getUserChoice
, что является функцией, ИЛИ вы ничего не возвращаете, поскольку console.log('msg')
не является чем-то, что нужно возвращать.
Не ясно, что вы хотели, чтобы произошло.Похоже, вы хотели напечатать ошибку, если пользователь выбрал не один из rock
, paper
или scissors
const validateUserChoice = userInput => {
// normalizes all inputs to lowercase
userInput = userInput.toLowerCase();
// checks whether the inputs are valid
const isValid = userInput === 'rock' ||
userInput === 'paper' ||
userInput === 'scissors';
if (!isValid) {
console.log('please enter a valid entry');
};
return isValid;
}
???
Обратите внимание, что естьболее быстрые способы проверить, является ли userInput
одним из многих допустимых параметров.Можно было бы
const validInputs = {
rock: true,
paper: true,
scissors: true,
};
const validateUserChoice = userInput => {
// normalizes all inputs to lowercase
userInput = userInput.toLowerCase();
// checks whether the inputs are valid
const isValid = !!validInputs[userInput];
if (!isValid) {
console.log('please enter a valid entry');
};
return isValid;
}
Вероятно, не рекомендуется смешивать проверку с отчетами об ошибках.
const validInputs = {
rock: true,
paper: true,
scissors: true,
};
const validateUserChoice = userInput => {
// normalizes all inputs to lowercase
userInput = userInput.toLowerCase();
// checks whether the inputs are valid
return !!validInputs[userInput];
};
if (!validateUserInput(someInput)) {
console.log('please enter a valid entry');
};
обратите внимание, что !!
просто делает что-то, что на самом деле неверно, чтобы быть ложным.
validInputs[userInput]
Будет либо true
, либо не определено.Часто это достаточно хорошо, но если вы действительно хотите, чтобы оно было true
или false
, тогда !!
выполняет преобразование, как в
const userInput = 'bananas'
const temp1 = validInputs[userInput]; // temp1 = undefined
const temp2 = !temp1; // temp2 = true
const temp3 = !temp2; // temp3 = false
Что и делает !!