如何正确访问JSON中带连字符的字段,例如'special-defense'?
带连字符的JSON字段访问方法
报错原因
JavaScript 对象的点语法仅支持访问符合标识符命名规范的属性,属性名只能包含字母、数字、下划线、$符号,且不能以数字开头,也不允许出现连字符、空格这类特殊字符。
你写的datas.stats.special-defense会被JS引擎解析为datas.stats.special减去defense,属于运算逻辑而非属性访问,自然会抛出语法错误;点语法也不支持直接包裹引号声明属性名,所以第二种写法同样不符合语法规则。
正确访问方式
使用方括号语法,将带特殊字符的属性名以字符串形式传入即可:
const specialDefenseValue = datas.stats['special-defense']
扩展说明
方括号语法的适用场景远不止带连字符的属性,以下场景都可以用方括号访问属性:
- 属性名包含空格、特殊符号
- 属性名为纯数字
- 需要通过变量动态读取属性值
// 变量动态访问示例 const propName = 'special-defense' const value = datas.stats[propName]
内容的提问来源于stack exchange,提问作者m ihsan
相关产品推荐
相关产品推荐

