当writable为false且在严格模式下赋值时抛出typeerror错误,提示“cannot assign to read only property 'propertyname'”,非严格模式下则静默失败。

当 JavaScript 中属性的 writable 描述符设为 false,且在严格模式下对该属性进行赋值操作时,会抛出 TypeError 错误。
错误信息典型格式
浏览器或运行环境会明确提示:
TypeError: Cannot assign to read only property 'propertyName'- 如果属性名是
x,则具体为:TypeError: Cannot assign to read only property 'x'
触发条件
该错误仅在同时满足以下两个条件时发生:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
- 属性通过
Object.defineProperty或类似方式设置了writable: false - 当前执行上下文处于严格模式(即脚本顶部或函数顶部存在
'use strict')
与非严格模式的区别
同一操作在非严格模式下不会报错,而是静默失败——赋值语句被忽略,属性值保持不变。
例如:
- 严格模式:
obj.x = 100→ 直接中断并抛出TypeError - 非严格模式:
obj.x = 100→ 无提示、不报错、obj.x值仍为原值
注意点
这个 TypeError 是运行时错误,不是语法错误;它只限制直接赋值(obj.prop = newValue),不影响通过 Object.defineProperty 修改描述符本身(前提是 configurable: true)。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










