我有一个关于JavaScript对象属性名称的问题.查看下面的代码:
<!DOCTYPE html>
<meta charset="UTF-8">
<title>An HTML5 document</title>
<script>
var obj = {
123: 'go' // 123 is not a valid JavaScript name. No error here.
};
var obj2 = {
123a: 'go' // An Error occurred.
};
</script>
Run Code Online (Sandbox Code Playgroud)
如果JavaScript对象的属性名称是有效的JavaScript标识符,则不需要对象属性名称的引号.
例如
({go_go: 'go'}); // OK
({go-go: 'go'}); // Fail
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,123aJavaScript名称无效,并且不会引用它.所以发生了错误.但123也是一个无效的JavaScript名称,也没有引用,为什么没有错误?我个人认为123必须引用.
谢谢!
Fel*_*ing 19
看看规格:
ObjectLiteral :
{ }
{ PropertyNameAndValueList }
{ PropertyNameAndValueList ,}
PropertyNameAndValueList :
PropertyAssignment
PropertyNameAndValueList , PropertyAssignment
PropertyAssignment :
PropertyName : AssignmentExpression
get PropertyName ( ){ FunctionBody }
set PropertyName ( PropertySetParameterList ){ FunctionBody }
PropertyName :
IdentifierName
StringLiteral
NumericLiteral
因此,属性名称可以是标识符名称,字符串或数字.123是一个数字而123a不是上面的数字.
每个键值对的关键部分可以写为任何有效的JavaScript标识符,字符串(用引号括起来)或数字:
var x = {
validIdentifier: 123,
'some string': 456,
99999: 789
};
Run Code Online (Sandbox Code Playgroud)
请参阅规范:http://bclary.com/2004/11/07/#a-11.1.5
| 归档时间: |
|
| 查看次数: |
2308 次 |
| 最近记录: |