我是JS的新手。
以下是我正在尝试的示例:
我的小程序只打印所有语言名称(忽略ALANGuage)。
第一个程序:
var languages = {
english: "Hello!",
french: "Bonjour!",
notALanguage: 4,
spanish: "Hola!"
};
// print hello in the 3 different languages;
for(var i in languages)
{
if(typeof languages[i] === "string")
console.log(languages[i]);
}
输出:
Hello!
Bonjour!
Hola!
这是正确的。
最初我在for循环中使用。(DOT)运算符编写了上述代码。
第二个计划:
var languages = {
english: "Hello!",
french: "Bonjour!",
notALanguage: 4,
spanish: "Hola!"
};
// print hello in the 3 different languages;
for(var i in languages)
{
if(typeof languages.i === "string")
console.log(languages.i);
}
第二个程序无法打印任何内容(为什么?)。
所以我在forloop中的if语句之前添加了几个输出语句,以便了解i的语言,language.i和typeof language.i;
所以修改后的第二个程序如下所示:
修改后的第二个程序:
var languages = {
english: "Hello!",
french: "Bonjour!",
notALanguage: 4,
spanish: "Hola!"
};
// print hello in the 3 different languages;
for(var i in languages)
{
console.log("i = " + i);
console.log("languages.i = "+languages.i);
console.log("typeof languages.i = "+ typeof languages.i);
//console.log(typeof languages.i);
if(typeof languages.i === "string")
console.log(languages[i]);
}
,输出如下:
输出:
i = english
languages.i = undefined
typeof languages.i = undefined
i = french
languages.i = undefined
typeof languages.i = undefined
i = notALanguage
languages.i = undefined
typeof languages.i = undefined
i = spanish
languages.i = undefined
typeof languages.i = undefined
为什么在i的值完美时,languages.i无法选择正确的引用?
为什么只有语言[i]工作?
两种符号language.i和languages [i]之间有什么区别?在哪里使用?
答案 0 :(得分:2)
如果属性名称是动态的,则必须使用括号表示法来访问它。 languages.i
基本上是languages['i']
。