JavaScript typeof应为数字,但返回字符串

JavaScript typeof应为数字,但返回字符串,javascript,typeof,Javascript,Typeof,我的问题是,我只想打印出对象的属性,这些属性是字符串。但当我检查属性的类型时,它返回的字符串也是一个数字 这是我的密码: var languages = { english: "Hello!", french: "Bonjour!", notALanguage: 4, spanish: "Hola!" }; for(var prop in languages){ console.log(typeof prop); } 输出为: string st

我的问题是,我只想打印出对象的属性,这些属性是字符串。但当我检查属性的类型时,它返回的字符串也是一个数字

这是我的密码:

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

for(var prop in languages){
    console.log(typeof prop);   
}
输出为:

string
string
string
string

我确信这只是一个很容易解决的问题,但我不明白为什么
typeof
在使用
变量时返回属性
notalguage
的字符串。。在..
中,您正在迭代键。因此,它有效地做到了:

console.log(typeof 'english');
console.log(typeof 'french');
console.log(typeof 'notALanguage');
console.log(typeof 'spanish');

prop
将是属性名称的字符串表示形式


您想测试
typeof languages[prop]

typeof
的输出总是一个字符串,由参数的类型决定

例如:


typeof languages[prop]
…for(var prop in languages){console.log(typeof languages[prop]);}谢谢你的建议,我对你的答案投了赞成票,但我会接受昆汀的答案,因为他的提示解决了我的问题。。
typeof 4 // # => "number"