我感觉,这是一个类似hashtable的结构,hashtable的key是会通过一定的算法,指向一个唯一的地址,所以这个1在这里应该不算是标识吧,算是hashtable的一个key

解决方案 »

  1.   

    console.log(x[1]) 你不是当做数组访问的吗?
    console.log(x.1) 还会没问题吗?
      

  2.   

    {}是json对象,键名称可以是任何字符。。不过不是标准标识符最后是这样写
    var x={"1":'hello'}
      

  3.   

    随着社会的进步,规则也是在逐渐变化的
    我 = 123;
    alert(我);
      

  4.   


    感谢 回复,数组和对象我还是可以区分的。var x={'key':'value'}
    x['key']
    这里属性是一个string,这不能看成是数组访问的吧?
      

  5.   


    严格 来讲,'{"1":'hello'}'这个才是JSON,而
    {key:"value"}这个才是JavaScript对象,有 点扯远了
      

  6.   

    http://www.ecma-international.org/ecma-262/5.1/#sec-7.6
    Identifier Names are tokens that are interpreted according to the grammar given in the “Identifiers” section of chapter 5 of the Unicode standard, with some small modifications. An Identifier is an IdentifierName that is not a ReservedWord
    标识符名是tokens,Unicode 标准第5 章的“标识符”节给出的文法加入了一些小的修改来解释它。Identifier 是一个IdentifierName 但不是一个ReservedWord知道不是ReservedWord就可以。
    种 = 4;
    a = 种+种;
      

  7.   


    但是标识符一直就是允许unicode字符集中的字符的。
      

  8.   

    感谢 回复。
    我清楚标识符一直是可以使用unicode字符集中的字符的,我想可能的原因就是书的作者是参考的ES3的标准。。
    ES5对ES3做了一些修正。
      

  9.   

    只注意你的题目,没注意你的内容。你那个应该是Object Initialiser
    对象初始化是一个以直接量的方式描述对象的初始化过程的表达式
    SyntaxObjectLiteral :
    { }
    { PropertyNameAndValueList }
    { PropertyNameAndValueList , }
    PropertyNameAndValueList :
    PropertyAssignment
    PropertyNameAndValueList , PropertyAssignment
    PropertyAssignment :
    PropertyName : AssignmentExpression
    get PropertyName ( ) { FunctionBody }
    set PropertyName ( PropertySetParameterList ) { FunctionBody }
    PropertyName :
    IdentifierName
    StringLiteral
    NumericLiteral
    PropertySetParameterList :
    Identifier
      

  10.   

    补上个链接
    http://www.ecma-international.org/ecma-262/5.1/#sec-11.1.5