闭包导致的问题

 

两个简单的对数组进行循环,然后打印数组的值,对于arr1的数组,可以正常打印出值为1,2, 3,4,5。

但是很难想象,对于arr2循环体的内部,增加了一步window.onresize之后,结果就完全不是我们想象的这样了。

闭包导致的问题

打印2次undefined。

如果单纯打印arr2,则可正常输出数组的值。那么问题必然出在i。

直接console.log(i), 结果为闭包导致的问题

那么通过函数自执行,将i当参数传入呢?

闭包导致的问题

就能正常输出数组的值了。

事实上就是由于当我们调整浏览器窗体大小的时候,该循环体已经执行完毕,所以i已经为5了,此时打印i即为5,打印arr2[5]则为undefined。

执行两次,完全是浏览器自身问题。

相关文章:

  • 2022-03-09
  • 2021-11-23
  • 2022-12-23
  • 2021-04-27
  • 2021-06-21
  • 2021-09-05
猜你喜欢
  • 2021-03-30
  • 2021-04-05
  • 2022-01-14
  • 2021-12-21
  • 2022-12-23
  • 2021-08-08
  • 2021-11-17
相关资源
相似解决方案