Javascript 用于in循环和访问属性值

Javascript 用于in循环和访问属性值,javascript,Javascript,我得到了这个密码: var languages = { english: "hello", french: "bonjour", notALanguage: 4, spanish: "hola" }; 我得把打招呼的三种方式打印出来。我这样做: for (var i in languages) { if (typeof(languages.i) === "string") { console.log(languages.i); } } 然而,它没有起作用。另一

我得到了这个密码:

var languages = {
  english: "hello",
  french: "bonjour",
  notALanguage: 4,
  spanish: "hola"
};
我得把打招呼的三种方式打印出来。我这样做:

for (var i in languages) {
  if (typeof(languages.i) === "string") {
    console.log(languages.i);
  }
}
然而,它没有起作用。另一方面,这起到了作用:

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

为什么??访问属性值有两种方法:使用languages.key或languages[“key”]。那么为什么我的代码失败了,为什么其他代码通过了?

为什么
语言.i
不起作用,是因为它相当于
语言[“i”]
。换句话说,它使用名称“i”而不是
i

“使用
语言。key
语言[“key”]
”——是的,但您没有这两种语言。您有
languages[key]
language.i
等于
language[“i”]
而不是
language[i]
这将有助于:var languages={english:“hello”}您需要编写languages.english,即在控制台语言时指定键。在您的情况下,它将是未定义的。对象;s值只能通过obj.keys(键入实际键)或obj['key']访问。同样,javascript中的数组可以通过数字或字符串示例数组['0']或数组[0]进行访问,因为数组是常规对象