结论:
在页面中测试相关问题并不存在,代码能正常执行,结果 a = 2。
暂时推断只是chrome控制台中执行代码与页面中执行过程存在差异,可能是词法解析或者执行阶段问题,以后对相应知识有更多了解再去探究里面的细节吧
1.1、
a = 2
let {a} = a;
注:分开输入
其余表现与一起输入相同
1.2、
a = {F: 1}
let {a} = a;
1.3、
a = {a: 2}
let {a} = a;
测试结果:a变为 未定义,此时通过var与const不能重新进行赋值,通过let可以重新赋值(三种情况都是)
而未使用let结构时,a是有值的, 且可以通过var、 let、 const赋值
2.1、
var a = 2
let {a} = a;
可以发现此时a变为未定义
注:分开输入
可以发现此时a未变为为定义
2.2、
var a = {F: 1}
let {a} = a;
2.3、
var a = {a: 2}
let {a} = a;
测试结果: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;