2017-05-16 50 views
-1

我得到這個代碼:對於-in循環和訪問屬性值

var languages = { 
    english: "hello", 
    french: "bonjour", 
    notALanguage: 4, 
    spanish: "hola" 
}; 

我必須打印出3種方式來打招呼。我這樣做:

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或語言[「key」]。那麼爲什麼我的代碼失敗了,爲什麼其他代碼會通過?

+0

*「或者使用'languages.key'或者'languages [」key「]'」* - 是的,但是您沒有其中之一。你有'語言[鍵]'。 – JJJ

+0

'language.i'等於'language [「i」]'而不是'language [i]' – Rajesh

+0

這將有助於:http://stackoverflow.com/questions/4968406/javascript-property-access-dot-符號-VS-支架 – Rajesh

回答

1

languages.i不能正常工作的原因是因爲它相當於languages["i"]。換句話說,它使用名稱「我」而不是i的值。