我是 JS 新手。
这是我正在试验的示例:
我的小程序只打印所有语言名称(notALanguage 被忽略)。
第一个程序:
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);
}
第二个程序无法打印任何内容(为什么?)。
所以我在for循环中的if语句之前添加了一些输出语句来了解i,language.i anf 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]有效?
两种表示法 languages.i 和 languages[i] 之间有什么区别以及在哪里使用?
最佳答案
当属性名称是动态的时,必须使用方括号表示法来访问它。 languages.i
基本上是 languages['i']
。
关于javascript - Javascript 中 typeof 的正确用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29723005/