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

JavaScript报错Uncaught ReferenceError: age is not defined:为何orxan[age]无法运行而orxan.age可正常工作?

为什么orxan[age]报错,而orxan.age能正常工作?

这是个非常常见的JavaScript属性访问误区,咱们把问题拆解开来说清楚:

两种属性访问方式的核心差异

JavaScript对象有两种访问属性的方式,它们的工作逻辑完全不同:

  1. 点表示法(.)
    当你写orxan.age时,.后面的age是一个属性名字面量——JavaScript会直接把它当作字符串"age",去orxan对象里匹配同名属性。这正好对应你构造函数里定义的this.age,所以能顺利拿到值30。

  2. 方括号表示法([])
    方括号里的内容会被当作表达式执行:如果是变量,JavaScript会先去当前作用域查找这个变量的值,再用这个值作为属性名去对象里查找。
    你代码里的orxan[age],JavaScript会先找名为age的变量,但你的作用域里从来没定义过这个变量(构造函数的age是局部参数,函数执行完就不存在了),所以直接抛出了Uncaught ReferenceError: age is not defined。

如何用方括号正确访问age属性?

有两种正确的写法:

  • 直接把属性名写成字符串字面量:
    console.log(orxan["age"]); // 输出30,和orxan.age效果一致
    
  • 先定义变量存储属性名字符串:
    let ageKey = "age";
    console.log(orxan[ageKey]); // 同样输出30
    

一句话总结

点表示法适合属性名固定且是合法标识符的场景;方括号表示法更灵活,适合属性名是变量、包含特殊字符(比如orxan["user-age"])或者动态生成的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 19:47:49