Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有'-';不';我不能正常工作_Javascript_Angularjs - Fatal编程技术网

Javascript 带有'-';不';我不能正常工作

Javascript 带有'-';不';我不能正常工作,javascript,angularjs,Javascript,Angularjs,我有一个JSON响应,格式如下 { "_meta" : { "next-person-id" : "1001", "totalPersons" : "1000" } } 我正在使用Angular的$http服务来检索此内容,并尝试访问javascript中的下一个人id属性,如下所示 $http.get(url).then( function(response){

我有一个JSON响应,格式如下

 {
  "_meta" : {
               "next-person-id" : "1001",
               "totalPersons" : "1000"
            }
 }
我正在使用Angular的
$http
服务来检索此内容,并尝试访问javascript中的
下一个人id
属性,如下所示

  $http.get(url).then(
        function(response){
              console.log(response._meta.next-person-id);
        }
  );
但是响应中的下一个人id始终未定义。但我可以访问totalPersons属性。在javascript中获取带有“-”字符的属性是否有问题?

使用括号表示法:

console.log(response._meta['next-person-id']);
console.log(response._meta['next-person-id']);

一种可能的替代方法是将键更改为使用下划线,以便
\u meta.next\u person\u id
可以工作。

您不能使用-编写变量,因为它也是减号

要解决此问题,请使用方括号表示法:

console.log(response._meta['next-person-id']);
console.log(response._meta['next-person-id']);

是的,因为在
JavaScript
中,可以使用
拉丁字母
数字
$
符号作为变量或属性

如果要使用
-
,应使用字符串引号将其转义

像这样

var obj = {
   'next-person-id': 2
}

console.log(obj['next-person-id']); // 2
说明:

全局范围内
-
表示
减去
。它试图从
名称
中减去
人物
。因此,您将得到如下错误:

ReferenceError: name is not defined
JS
中,您可以通过两种方式访问对象属性

1) 点国家

obj.property
2) 方括号国家

obj['property']
这里您需要解析字符串,所以正如您所知道的,在字符串中可以有除字符串引号符号以外的任何符号(它将关闭字符串)


参考资料:

“因为在JavaScript中,变量或属性可以使用拉丁字母、数字和$符号”-标识符中还可以使用许多其他字符。“在全局范围中-表示负号”-范围无关。这就是
-
在字符串文本之外的含义。@Quentin请随意编辑我的回答。您可以从这个链接检查JavaScript变量名验证程序