JavaScript 中 let 变量的提升

问题描述

我定义了以下函数

const func = ()=>{
  let a =  new Array(2).fill().map(i => new Array(2).fill(1));
  console.log(`%o`,a);
  a[0][0]++;
  return a;
}

当我在 DevTools 中实现 func() 时,结果是这样的:

(2) [Array(2),Array(2)]
0: (2) [2,1]
1: (2) [1,1]
length: 2
__proto__: Array(0)


(2) [Array(2),1]
length: 2
__proto__: Array(0)

我想要第一个

console.log(`%o`,a); 

成为

[[1,1],[1,1]]

但结果出乎意料。

为什么会这样?这是 hoisting 的示例吗?

任何信息将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)