Chrome控制台调试发现的一个解构的小问题

384 阅读1分钟

结论: 

        在页面中测试相关问题并不存在,代码能正常执行,结果 a = 2。

        暂时推断只是chrome控制台中执行代码与页面中执行过程存在差异,可能是词法解析或者执行阶段问题,以后对相应知识有更多了解再去探究里面的细节吧

1.1、

a = 2

let {a} = a;

image.png

注:分开输入image.png

其余表现与一起输入相同

image.png

1.2、

a = {F: 1}

let {a} = a;

image.png

1.3、

a = {a: 2}

let {a} = a;

image.png

测试结果:a变为 未定义,此时通过var与const不能重新进行赋值,通过let可以重新赋值(三种情况都是)

image.png

而未使用let结构时,a是有值的, 且可以通过var、 let、 const赋值

image.png

image.png

image.png

image.png

2.1、

var a = 2

let {a} = a;

image.png

可以发现此时a变为未定义

注:分开输入image.png

可以发现此时a未变为为定义

2.2、

var a = {F: 1}

let {a} = a;

image.png

2.3、

var a = {a: 2}

let {a} = a;

image.png

测试结果:a变为 未定义,此时通过var、const、let可以重新赋值(三种情况都是),

3.1、

let a = 2

let {a} = a;

3.2、

let a = {F: 1}

let {a} = a;

3.3、

let a = {a: 2}

let {a} = a;

4.1、

const a = 2

let {a} = a;

4.2、

const a = {F: 1}

let {a} = a;

4.3、

const a = {a: 2}

let {a} = a;