为什么(str === undefined)没有返回任何东西

时间:2018-05-16 08:09:05

标签: javascript string if-statement

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('');

link

鲍勃 鲍勃是一个缺乏勇气的少年。在谈话中,他的回答非常有限。

鲍勃回答'当然。'如果你问他一个问题。

他回答'哇,放松一下!'如果你对他大喊大叫。

他回答'冷静下来,我知道我在做什么!'如果你向他大喊一个问题。

他说'很好。那样!“如果你在没有真正说什么的情况下对他说话。

他回答'随便。'其他任何事情。

2 个答案:

答案 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?'));