#javascript #console.log
#javascript #console.log
Вопрос:
const getUserChoice = (userInput=userInput.toLowerCase()) => {
if (userInput==='rock'||userInput==='paper'||userInput==='scissors') {
return userInput;
}
else {
console.log('Error!');
}
};
console.log(getUserChoice('Scissors'));
// Похоже, это не работает. Только если я набираю слова всеми строчными буквами.
Комментарии:
1. Удалите изменение на нижний регистр из объявления параметра внутри функции.
Ответ №1:
const getUserChoice = (userInput) => {
userInput = userInput.toLowerCase()
if (userInput === 'rock' || userInput === 'paper' || userInput === 'scissors') {
return userInput;
} else {
return 'Error!'; //changed to return
}
};
Комментарии:
1. Хотя этот код может отвечать на вопрос, предоставление дополнительного контекста относительно того, почему и / или как этот код отвечает на вопрос, повышает его долгосрочную ценность.
2. @adiga, руководство приветствуется.
3. @Kasalwe бесстыдник, но, пожалуйста, оцените мой ответ. Проблема и решение очевидны для опытного разработчика, но мне потребовалось намного больше времени, чтобы написать это, потому что я потратил время, чтобы объяснить, что было не так, почему, какие были неверные предположения и что на самом деле делает код, чтобы предоставить ответ, который не только объясняет, что следует изменить, но и почему.
Ответ №2:
const getUserChoice = (userInput=userInput.toLowerCase()) => {
В этой строке вы создаете значение по умолчанию для аргумента функции, которое будет, undefined
если userInput
оно не существует в области видимости. Он не манипулирует передаваемым вами аргументом.
Например, функцию, подобную этой:
const hello = (name="stranger") => console.log(`hello, ${name}`)
скажет «привет, незнакомец», если вызывается без аргументов, и «привет, ножницы», если вызывается как hello("Scrissors")
.
Когда вы вызываете функцию: getUserChoice('Scissors')
аргумент по умолчанию переопределяется тем, что вы передали, и userInput
внутри вашей функции есть "Scissors"
.
Вам нужно выполнить преобразование внутри тела функции:
const getUserChoice = (userInput) => {
userInput=userInput.toLowerCase()
/* now userInput is the lowercase version of the argument you pass */
}
Ответ №3:
Вы можете попробовать сделать
const getUserChoice = (Input) => {
let userInput = Input.toLowerCase();
if (userInput==='rock' || userInput==='paper' || userInput==='scissors') {
return userInput;
} else {
console.log('Error!');
}
};
console.log(getUserChoice('Scissors'));