2017-10-20 61 views
2

我是JavaScript新手。格式是在網上給出的,我試過但給出了未定義的結果。JavaScript對象表達式表示法無法正常工作

var name = { 
    a : 'a', 
    b:'b',c:'c' 
}; 
console.log(name.a);// undefined 
console.log(name);// '[object object]' 

輸出未定義?爲什麼

+0

我查了鉻,Firefox和JsBin也輸出.. –

+0

不可能.....請顯示那個jsbin。 –

+0

https://jsbin.com/xereluw/edit?js,console,output –

回答

6

您與window.name有衝突。如果在全局上下文中使用name,則該值將被字符串化。解決方案是隻在函數上下文中使用可變全局範圍之外,而不是,或任何地方:

var f = function(){ 
 
    var name = { 
 
    a : "a", 
 
    b : "b", 
 
    c : "c" 
 
    }; 
 
    console.log(name.a); 
 
    console.log(name); 
 
} 
 

 
f();

+3

OP可能需要更多的解釋,因爲他們是新手到javascript – charlietfl

+0

是的,它花了我一分鐘,自己找到一些信息:)最好的一種問題 - 我不知道這是一個問題,直到我看到問題,所以我學到了也是。 –

3

name是在javascript中 reserved predefined word

引用:

您最好避免將以下標識符作爲JavaScript 變量的名稱。這些預定義的名字依賴於實現 JavaScript對象,方法或屬性(和,可以說,一些應該 一直保留字):

+2

這不是保留字。這只是瀏覽器中的一個先前存在的全局變量。 –

+0

@FelixKling更新 –