【问题标题】:Number as an identifier数字作为标识符
【发布时间】:2015-07-04 04:21:33
【问题描述】:

我目前正在从如下所示的 JSON 数组中提取数据

    "title": Title,
    "chapters": {
        "13c": {
            "words": 123,
            "spaces": 321
        },
        "15d": {
            "words": 123,
            "spaces": 321
        },
        "38h": {
            "words": 123,
            "spaces": 321
        }
    }

问题是当我尝试使用以下内容选择 13c(如果存在)时

if(book.chapters.13c){
     console.log(book.chapters.13c);
}

我收到以下错误:

Uncaught SyntaxError: Unexpected token ILLEGAL

【问题讨论】:

标签: javascript jquery arrays json


【解决方案1】:

对于您发现自己无法使用. 语法的每种情况,请改用[] 语法:

console.log(book.chapters['13c']);

注意[] 语法和. 语法是等价的,但[] 语法更灵活,因为它对属性键没有限制。例如,如果您的属性键包含空格:

book.chapters['hello world'];

如果您的属性键需要从变量构造:

book.chapters[somevar + '-' + someothervar];

等等

在 javascript 中,foo.bar 只是 foo['bar'] 的简写。

【讨论】:

    【解决方案2】:

    你可以这样做:

    if(book.chapters["13c"]) ...
    

    这在功能上等同于您想要的。通常你不应该在标识符的开头使用数字,但它是有效的。由于它被解析为一个字符串,所以它是相同的。

    相当于这样创建一个对象:

    {
      "0":true,
      "1":"testing",
      "2":"yup",
      "length": 3
    }
    

    【讨论】:

      猜你喜欢
      • 2023-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-14
      • 2022-10-13
      • 1970-01-01
      • 1970-01-01
      • 2021-09-24
      相关资源
      最近更新 更多