Javascript 为什么按索引调用对象项时出现语法错误?

Javascript 为什么按索引调用对象项时出现语法错误?,javascript,arrays,object,indexing,Javascript,Arrays,Object,Indexing,为什么我这样做: var obj = { 0:"bla", 1:"blabla" } obj.0给了我一个错误,我只能执行obj[0] var obj = { 0:"bla, 1:"blabla" } //wrong bla未正确使用双qoutes,请尝试 var obj = { 0:"bla", 1:"blabla" } //correct 您的代码似乎有一个语法错误,因为bla之后缺少一个“: var obj = { 0:"bla", 1:"blabla" } 无论如何,obj.

为什么我这样做:

var obj = { 0:"bla", 1:"blabla" }
obj.0
给了我一个错误,我只能执行
obj[0]

 var obj = { 0:"bla, 1:"blabla" } //wrong
bla未正确使用双qoutes,请尝试

 var obj = { 0:"bla", 1:"blabla" } //correct

您的代码似乎有一个
语法错误
,因为
bla
之后缺少一个

var obj = { 0:"bla", 1:"blabla" }
无论如何,
obj.0
将为您提供一个
SyntaxError
,因为JavaScript通过以下语法识别属性访问:

<identifier>.<identifier>
通过执行
obj[0]
,JavaScript将
0
识别为表达式,并将其转换为字符串
“0”
,遵守JavaScript对象是关联数组的规则,然后可以通过其键(即字符串)访问其属性,如下所示:

obj["constructor"]
您可以在ECMAScript语言规范的部分中了解更多有关这方面的信息

以下代码描述标识符语法(取自上面的链接):

正确的字符不能以数字开头。就这么简单。如果属性的键是正确的标识符,则只能使用
(点)符号访问属性。否则必须使用方括号符号:
obj['0']

obj[0]
obj['0']
相同,因为属性键必须是字符串(任何字符串都是有效的属性键),因此括号之间的值强制为字符串。

尝试以下操作:

声明

var obj = { "0":"bla", "1":"blabla" };
访问

alert(obj[0]);
alert(obj[1]);

数组不是更方便吗
var-arr=[“bla”,“blabla”]
arr[0]//bla您缺少一个双引号。它应该是
var-obj={0:“bla”,1:“blablabla”}
缺少的报价仅在此处,当我使用报价运行此操作时,我仍然会出错error@Endless理解JS的工作方式是正确的,但你仍然可以使用数字……obj[1]是的,但在这种情况下,
1
是一个包含
[
]
的表达式。
var obj = { "0":"bla", "1":"blabla" };
alert(obj[0]);
alert(obj[1]);