Console.log不准的问题
最后更新于
最后更新于
前两天
一个小伙伴给我提了一个号称
特别诡异的问题
其实这个问题之前我也遇到过
我简单给大家模拟了一下哈
就是点这个按钮呢会走这个方法
然后这个方法前两行就特别简单
先烙个一下这个数组
然后烙个一下数组第0个元素
来看下效果哈
打开数组的第0个元素是 n 底泛的
但是呢我们把数组展开看
里边是有元素的
那为什么会这样呢
其实就是这个展开的问题
呃这个数组打印的时候确实为空
但是当我们第一次展开变量的那一刻
系统
会读取一下这个数组的最新的状态 (类似引用传递了变量)
把它展示给我们
那在我这个例子里边呢
他下边是还有代码的
就是
打印完以后他往数组里放了一个元素
所以呢
在我们展开的那一刻
其实数组里边已经有值了
只是在打印的时候还没有值
那只要我们展开过这个变量
再往里放值
我们再重新展开是没有用的
我们可以验证一下哈
我们先声明一个变量具有 tmp 哈
好然后呢我们打印一下
tmp
打印的时候现在是空对吧
肯定里面没有值但是我先不展开
我再往里面push一个
push好之后呢我再展开大看
它里边已经有123了吧
然后再push一个
好我们再展开大看没有那个但是呢我们再log一下
tmp
他看他已经有123和234了
所以啊
我们在调试的时候
如果打印的是一个对象或者一个数组
大家要小心有
可能这个对象和数组
它又变化过
但是呢你在这里展开变量的时候
他只能看到这个变量在你展开
那一刻的状态