JavaScript控制台在分配变量之前打印分配的值?

前端之家收集整理的这篇文章主要介绍了JavaScript控制台在分配变量之前打印分配的值?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我对 JavaScript或Chrome控制台的行为感到困惑.有人能帮我理解吗

基本上我有以下JavaScript代码,不嵌套在任何函数或其他范围内:

  1. var initial_array = [];
  2.  
  3. function initialiseArray() {
  4. initial_array = [2,9,8,6,2,1];
  5. }
  6.  
  7. function copyToNewArray() {
  8. var copied_array = [];
  9.  
  10. console.log("COPIED 1",copied_array);
  11.  
  12. for (var i = 0; i < initial_array.length; i++) {
  13. var copy = initial_array[i];
  14. copied_array.push(copy);
  15. }
  16.  
  17. console.log("COPIED 2",copied_array);
  18. }
  19.  
  20. initialiseArray();
  21. copyToNewArray();

我希望COPIED 1打印[] – 因为变量尚未分配,而是打印[2,1] – 即分配后的值.

为什么?

顺便提一句,如果用行__ray_ = copy_array替换第8-11行,那么RESULTS 1的确打印为[].是否与使用.push有关?

解决方法

尝试在Chrome脚本调试器中调试问题.放上一个断点:
  1. for (var i = 0; i < initial_array.length; i++) {

你会看到你所期望的行为.

您遇到的问题是,您正在做出错误的假设,即Chrome调试器会在异步执行console.log时立即打印该值.由于数组在后端被引用传递,当它实际上打印该值时,它现在是您看到的.

猜你在找的JavaScript相关文章