Javascript console.log&;数据流

Javascript console.log&;数据流,javascript,html,Javascript,Html,我试图理解为什么在第一个console.log(dates)下,在调用排序算法之前,它显示日期已经按升序排序。第一个console.log(日期)不应该准确地显示我声明的内容吗 函数doSomething() { 变量日期=[ {“日期”:27,“月份”:7}, {“日期”:26,“月份”:7}, {“日期”:25,“月份”:7}, {“日期”:24,“月份”:7}, {“日期”:23,“月份”:7} ]; console.log(dates);//此部分应未排序。为什么排序 //排序算法 函

我试图理解为什么在第一个console.log(dates)下,在调用排序算法之前,它显示日期已经按升序排序。第一个console.log(日期)不应该准确地显示我声明的内容吗

函数doSomething()
{
变量日期=[
{“日期”:27,“月份”:7},
{“日期”:26,“月份”:7},
{“日期”:25,“月份”:7},
{“日期”:24,“月份”:7},
{“日期”:23,“月份”:7}
];
console.log(dates);//此部分应未排序。为什么排序
//排序算法
函数排序(数组、属性、方向)
{
方向=方向| | 1;
排序(函数比较(a,b)
{
让比较=0;
如果(a[属性]>b[属性])
{
比较=1*方向;
}如果(a[属性]doSomething()
似乎在console.log访问阵列时,它已经被排序,因为console.log不是线程安全的

它不会阻止执行流继续作用于数组并对其排序

如果我们调用一个执行阻塞函数(而不是console.log),它实际上会显示未排序的数组

function LogTheDateMonthArray(arr){
  var str = "";
  for(var i=0;i<arr.length;i++){
    str += arr[i].date + ", " ;
  }
  document.getElementById('consoleLog').innerHTML=
    document.getElementById('consoleLog').innerHTML+"\n\n"+str;
}
功能日志日期(arr){
var str=“”;

对于(var i=0;i

,因为它们是以开头排序的?第一个
console.log()
不以升序显示它们。它以创建它们的顺序显示它们(降序)第二个显示的是按升序排序的。这正是应该发生的。投票结束。不,在声明中是按降序排序的,但我想按升序排序。@ScottMarcus第一个控制台.log显示的是23,24,25,26,27,这就是为什么我感到困惑并试图理解why@Jordan第一个
console.log
报告
27
26
25
24
23
,正如它应该的那样。感谢您澄清我的困惑。现在请更好地理解它