2017-10-20 59 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更新 –