CodeCademy对象II简介无法找到错误

时间:2015-05-13 06:39:25

标签: javascript

对于此作业,对象'语言'是为你而创造的。作业是使用' for-in'循环写三种不同的方式来说'你好。'我想使用' if'声明检查该属性是否为'字符串'如果是这样,打印那个版本的'你好'到控制台。我被困住并且收到一条错误,说明你的语法有问题。"

var languages = {
    english: "Hello!",
    french: "Bonjour!",
    notALanguage: 4,
    spanish: "Hola!"
};

// print hello in the 3 different languages
for (var x in obj) {
    var typeCheck = languages.x;
    if {
        (typeof typeCheck === "string") {
            console.log(typeCheck;)
        }
    }
}

3 个答案:

答案 0 :(得分:5)

您正在使用未定义的变量obj进行循环。请改用已定义的languages

for (var x in languages) {
    var typeCheck = x;
    if {
        (typeof typeCheck === "string") {
            console.log(typeCheck;)
        }
    }
}

<强>更新

我注意到您的代码中存在很多错误。

您的if statement

这不是如何使用它,目前它是:

if {
      (typeof typeCheck === "string") {
        console.log(typeCheck;)
      }
}

将其更改为:

if (typeof typeCheck === "string") {
     console.log(typeCheck);
}

然后在console.log()上结束半冒号,它应该在结尾)之后。

所以来自:

console.log(typeCheck;)

收件人:

console.log(typeCheck);

将它们放在一起:

for (var x in languages) {
    var typeCheck = x;
    if (typeof typeCheck === "string") {
            console.log(typeCheck);
    }

}

答案 1 :(得分:2)

使用Robin建议的代码,我将其修改为以下最终解决方案。

for (var x in languages) { 
    var typeCheck = languages[x]; 
    if (typeof typeCheck === "string") { 
        console.log(typeCheck); 
    }
}

答案 2 :(得分:1)

这里有一些问题:

  • for (var x in obj) { - 这会在某个对象obj上循环,在此上下文中未定义。你需要循环languages
  • if { - if语句的格式为if (condition),而非您拥有的格式。

这是loops enumerable properties languages的正确版本,并执行类型检查。

&#13;
&#13;
    var languages = {
      english: "Hello!",
      french: "Bonjour!",
      notALanguage: 4,
      spanish: "Hola!"
    };

    Object.keys(languages).forEach(function(key) {
      if (typeof languages[key] === "string") {
        console.log(languages[key]);
      }
    });
&#13;
&#13;
&#13;