使用解构赋值交换数组元素时触发Cannot access变量初始化前访问错误
问题原因与解决方案
你遇到的问题是**JavaScript自动分号插入(ASI)**的语法陷阱。两行代码之间未添加分号时,JS引擎会错误地将它们解析为同一条语句:
let array_names = ["Dave", "johson", "Lime", "Key", "Freeman", "Chell", "Shepart", "Furious"][array_names[0], array_names[1]] = [array_names[1], array_names[0]]
此时右侧的array_names[0]会在变量完成初始化前被访问,直接触发ReferenceError。
两种可行的解决方法
方案1:在第一行末尾添加分号
let array_names = ["Dave", "johson", "Lime", "Key", "Freeman", "Chell", "Shepart", "Furious"]; [array_names[0], array_names[1]] = [array_names[1], array_names[0]]方案2:给解构赋值语句包裹括号
用括号明确分隔两条语句,避免被当成前一行的延续:let array_names = ["Dave", "johson", "Lime", "Key", "Freeman", "Chell", "Shepart", "Furious"] ([array_names[0], array_names[1]] = [array_names[1], array_names[0]])
内容的提问来源于stack exchange,提问作者feefewfgwtg
相关产品推荐
相关产品推荐

