数组的解构赋值,出错?

    const arr = [1,2,3,4]
    let obj = {
        a: '',
        b: '',
        c: ''
    }
    [obj.a, obj.b] = arr
    console.log(obj)

image.png
报错,怎么写才是正确的

阅读 2.5k
2 个回答
    const arr = [1,2,3,4]
    let obj = {
        a: '',
        b: '',
        c: ''
    };
//   ^
    [obj.a, obj.b] = arr
    console.log(obj)

javascript 的语句必须以 ; 结束。但是程序里经常可以不写 ; ,因为存在 automatic semicolon insertion ,可以自动插入 ;

但是 ; 不会随地插入,也不是每行结束的地方都会插入。看自动插入 ; 的规则,大概是只要语法上还能解释下去,就不会插入。在上面的位置,就不会插入 ; 。然后上面的程序却需要这个 ; 语义上才是正确的。所以必须显式地写上这个 ;

首先需要明白的是分号在JavaScript中什么时候是必须的,只有一种情况是必须的,那就是当两条语句在同一行的时候
然后再来看下示例代码,示例代码在JavaScript进行解析的时候等价于如下代码:

const arr = [1,2,3,4]
let obj = {
    a: '',
    b: '',
    c: ''
}[obj.a, obj.b] = arr
console.log(obj)

let赋值语句与结构赋值语句在同一行了,那这个时候就是需要分号的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题