ES6/ECMAScript6解构是否会创建新变量?

Emr*_*reG 2 javascript ecmascript-6

如您所知,我们使用解构来使用ES6对象中的值.我想知道它的深度.

当我写下面的代码时:

let (or const) { firstVar, secondVar } = this.props
Run Code Online (Sandbox Code Playgroud)

它是在内存中分配新空间还是像指针一样使用这些值?

在过去,我写的时候

let { options } = this.props
options.splice(0,20)
Run Code Online (Sandbox Code Playgroud)

我注意到,虽然我的编译器在不同的情况下有像'props is readonly'这样的错误,但是道具中的变量已经改变了.怎么可能呢?

Ber*_*rgi 6

letconst声明新变量,是的.它们在赋值/初始化后独立于对象属性.

当我写作时,let { options } = this.props; options.splice(0,20)我注意到道具中的变量已经改变了

是的,那是因为你的选项是一个数组,变量和object属性都指向同一个可变数组实例.作业没有复制其内容.