function hey(str) {
for (let char of str){
if (str.slice(-1) !== "?" && str === str.toUpperCase() && str !== " "){
return 'Whoa, chill out!';
}
else if (str.slice(-1) === "?" && str === str.toUpperCase()){
return "Calm down, I know what I'm doing!";
}
else if(str.slice(-1) === "?" && str !== str.toUpperCase()){
return "Sure.";
}
else if (str === " " || str === undefined){
return "Fine. Be that way!";
}
else {
return 'Whatever.';
}
}
}
hey('');
鲍勃 鲍勃是一个缺乏勇气的少年。在谈话中,他的回答非常有限。
鲍勃回答'当然。'如果你问他一个问题。他回答'哇,放松一下!'如果你对他大喊大叫。
他回答'冷静下来,我知道我在做什么!'如果你向他大喊一个问题。
他说'很好。那样!“如果你在没有真正说什么的情况下对他说话。
他回答'随便。'其他任何事情。
答案 0 :(得分:1)
你的代码中有两个错误。
for
循环是不必要的。trim
函数删除无用空格,以便比较Bob所说的是否为空字符串。
function hey(str) {
const trimmedStr = (str || '').trim();
if (trimmedStr === '') {
return "Fine. Be that way!";
}
if (trimmedStr.slice(-1) === "?") {
return trimmedStr === trimmedStr.toUpperCase()
? "Calm down, I know what I'm doing!"
: "Sure.";
}
return trimmedStr === trimmedStr.toUpperCase()
? 'Whoa, chill out!'
: 'Whatever.';
}
console.log(hey(' '));
console.log(hey('FOO?'));
console.log(hey('Foo?'));
console.log(hey('FOO'));
console.log(hey('Foo'));

答案 1 :(得分:0)
您可以通过获取字符串或空字符串来修剪字符串,并与逻辑组进行比较。
在return
子句中使用if
语句,可以省略else
,因为如果true
,则函数会以return
终止。对于下一次检查,if
就足够了else
。此方法称为early exit。
更多内容阅读:Should I return from a function early or use an if statement?
function hey(str) {
str = (str || '').trim();
if (str === "") {
return "Fine. Be that way!";
}
if (str.slice(-1) === "?") {
return str === str.toUpperCase()
? "Calm down, I know what I'm doing!"
: "Sure.";
}
return str === str.toUpperCase()
? 'Whoa, chill out!'
: 'Whatever.';
}
console.log(hey(''));
console.log(hey('BOA!'));
console.log(hey('BOA?'));
console.log(hey('ok!'));
console.log(hey('ok?'));