在chrome的控制台输出如下 但是当我们刷新一遍网页运行结果就会变成我们想要的 我们再用数组来验证一下: 当我们刷新一遍网页,运行结果依旧会变成我们想要的 《JavaScript异步编程》书中是这么解释的: WebKit的console.log并没有立即拍摄对象快照相反,它只存储了一个指向对象的引用然后在代码返回事件队列时才去拍摄快照。而chrome的内核正是webkit Node的console.log是另一回事它是严格同步的,因此同样的代码输出却是正确的 书中指出JavaScript 环境提供的异步函数一般分为两大类:I/O函数囷计时函数。console.log就是一个I/O函数对于引用类型,console.log会先储存一个引用因此在打印引用类型时结果不一定准确。