You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何对象属性名会影响访问方式?点语法访问异常咨询

问题原因及两种属性访问方式的差异

你的问题核心在于JavaScript对两种属性访问方式的规则限制不同:

  • 点符号(.)访问的限制
    使用点符号时,后面跟的属性名必须是合法的JavaScript标识符。合法标识符的规则是:

    • 只能以字母、下划线(_)或美元符号($)开头
    • 后续字符可以是字母、数字、下划线或美元符号
    • 不能是JavaScript的关键字(如function、if等)

    你的属性名registered_business_name里包含连字符(-),这违反了合法标识符的规则。此时facility.registered_business_name会被JavaScript解析成registered减去business再减去name的表达式,而不是访问属性,所以返回undefined。

  • 方括号([])访问的灵活性
    方括号里的属性名是以字符串形式传入的,只要是有效的字符串(哪怕包含连字符、空格、特殊字符),都能精准匹配对象的属性键。所以facility['registered_business_name']能正确找到对应的属性值。

举个简单的验证例子:

const obj = {
  "my-property": "test value"
};
console.log(obj.my-property); // 报错:ReferenceError: my is not defined
console.log(obj['my-property']); // 输出:test value

内容的提问来源于stack exchange,提问作者That_LEGO_Guy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 14:55:57