前端/移动开发面试题更新 2026-08-05

在JavaScript中,如果一个对象被声明为const,它的属性是否可以被修改?请说明原因并给出示例。

前端/移动开发技术原理JavaScript

考察说明

考察对const声明本质的理解,即const只保证变量绑定不可变,不保证对象内容不可变。

回答思路

  1. 【回答框架 1】const声明的变量只保证引用不可重新赋值,即变量名指向的内存地址不可更改,但该地址指向的对象内容是可变的。对于对象和数组等引用类型,const防止的是变量重新赋值,而不是属性修改。
  2. 【回答框架 2】对象的属性修改包括添加、删除或更改已有属性,这些操作都是允许的,因为const不提供深度冻结或属性级别的不可变性。例如,const obj = {a: 1}; obj.a = 2; obj.b = 3; 都能成功执行。
  3. 【回答框架 3】如果需要对象本身不可变,应使用Object.freeze()进行浅冻结,或者使用Object.preventExtensions()、Object.seal()等方法,但这些都只是浅层约束,嵌套对象仍是可变的。
  4. 【回答框架 4】实际开发中,const常用于确保变量不被意外重新赋值,但不能误以为对象内容不可变。若需要不可变数据,可考虑使用不可变数据结构库或深度冻结方案。
  5. 【关键点 1】const只限制变量引用不可变,不限制对象属性变化。
  6. 【关键点 2】修改const对象的属性(增删改)是合法的。
  7. 【关键点 3】使用Object.freeze()可使其属性不可修改,但仅浅冻结。
  8. 【易错点 1】误以为const声明对象后,对象的所有属性都不可变。
  9. 【易错点 2】混淆了primitive类型和对象类型的const行为。
  10. 【易错点 3】忽略Object.freeze()的浅层限制,导致嵌套对象仍可变。