在Javascript中正确使用typeof

时间:2015-04-18 21:22:09

标签: javascript

我是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]之间有什么区别?在哪里使用?

1 个答案:

答案 0 :(得分:2)

如果属性名称是动态的,则必须使用括号表示法来访问它。 languages.i基本上是languages['i']