JavaScript报错Uncaught ReferenceError: Cannot access 'title' before initialization原因咨询
问题分析与解决
你的报错核心是解构赋值写法错误,同时触发了JavaScript的暂时性死区(TDZ)规则,具体原因拆解如下:
误解了解构赋值的语法逻辑
解构赋值的作用是从已存在的对象中提取属性值到变量,正确语法是let { 属性名 } = 源对象。你在clause1里写的{ options:title, options:width, options:height}完全错误:- 对象键重复,JavaScript中重复键会被覆盖,最终只会保留最后一个
options键; - 这里的
title、width、height是你正要通过let声明的变量,在解构赋值的右侧,这些变量还处于暂时性死区中,根本无法被访问,所以抛出了引用错误。
- 对象键重复,JavaScript中重复键会被覆盖,最终只会保留最后一个
正确的写法
直接把已初始化的options对象作为解构的源对象即可:let {title, width, height} = options;额外说明
你之前能正常打印options.title,是因为options对象已经完成初始化,它的title属性和你要声明的title变量是完全独立的两个东西——前者属于options对象,后者是新变量,只有通过正确的解构操作,才能把对象属性值赋值给新变量。
内容的提问来源于stack exchange,提问作者yapkm01
相关产品推荐
相关产品推荐

