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