为什么jQuery each()函数表现得像异步的?

时间:2019-01-12 21:19:45

标签: javascript jquery arrays

我看到很多人回答说jQuery each()函数不是异步的。但是我不明白为什么这个功能会表现出某种方式。谁能解释为什么这样的代码:

var otherArray = [1, 2, 3, 4, 5];

var array = [];
console.log(array);

$(otherArray).each(function () {
    array[1] = $(this);
});

具有以下输出:

enter image description here

但是该代码:

var otherArray = [1, 2, 3, 4, 5];

var array = [];
console.log(array);

$(otherArray).each(function () {
    // array[1] = $(this);
})

具有该输出:

enter image description here

1 个答案:

答案 0 :(得分:1)

您在Chrome / Firefox中看到的控制台实际上并没有提供对象{em> 在console.log时的确切快照。参见this answer

代码确实是同步运行的。要验证这一点,请打印“原始”值,例如数组的长度:

var otherArray = [1, 2, 3, 4, 5];

var array = [];
console.log(array.length);

$(otherArray).each(function () {
  array[1] = $(this);
});

应按预期打印0