Javascript console.log&;数据流
我试图理解为什么在第一个console.log(dates)下,在调用排序算法之前,它显示日期已经按升序排序。第一个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);//此部分应未排序。为什么排序 //排序算法 函
函数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
,正如它应该的那样。感谢您澄清我的困惑。现在请更好地理解它