为什么for-of-loop还没有完成运行,跳出来运行console.log?

运行环境

  • Visual Studio Code v1.15.1自己编译
  • Node.js v8.2.1
  • 操作系统:Windows 10

描述

我想在源代码和sorting之间添加“sorting后”,如下所示: CONSOLE屏幕截图1

但是控制台偶尔会显示: CONSOLE屏幕截图2

为什么for-of-loop还没有完成运行,跳出来运行console.log? 源代码:

// Random to generate double digits. function getRandom() { return Math.round(Math.random() * 100); } // Writing data to the array. var score = [ ["a", getRandom()], ["b", getRandom()], ["c", getRandom()], ["d", getRandom()], ["e", getRandom()] ]; console.log("Before sort:"); // Print source arry for (let m of score) { console.log(m); } // Call sort() score.sort((a, b) => { return b[1] - a[1]; }); console.log("After sort:"); // Print sort arry. for (let n of score) { console.log(n); } 

由于从数组属性多次访问相同的方法,并且该方法包含一些数值计算,所以在尝试打印时看起来数组没有准备好

 // Random to generate double digits. function getRandom() { return Math.round(Math.random() * 100); } // Writing data to the array. var score = [ ["a", getRandom()], ["b", getRandom()], ["c", getRandom()], ["d", getRandom()], ["e", getRandom()] ]; console.log("Before sort:"); setTimeout(function(){ // Print source array for (let m in score) { console.log(m); } // Call sort() score.sort((a, b) => { return b[1] - a[1]; }); console.log("After sort:"); for (let n in score) { console.log(n); } },300);