var a = document.querySelectorAll('div');
console.log(a)
alert(11)
浏览器先输出控制台的内容,然后alert然而,改变demo
var a = document.querySelectorAll('div')[0];
console.log(a)
alert(11)
浏览器先alert,然后控制台输出内容,同样适用document.getElementsByClassName,查了半天不成功,还望解答
var a = document.querySelectorAll('div');
console.log(a)
alert(11)
浏览器先输出控制台的内容,然后alert然而,改变demo
var a = document.querySelectorAll('div')[0];
console.log(a)
alert(11)
浏览器先alert,然后控制台输出内容,同样适用document.getElementsByClassName,查了半天不成功,还望解答
在“你不懂 JS:异步与性能”第 1 章中:
没有关于这些
console.*方法如何工作的规范或一组要求——它们不是 JavaScript 的正式组成部分,而是由托管环境添加到 JS 中(参见本书系列的类型和语法标题)。因此,不同的浏览器和 JS 环境随心所欲,这有时会导致令人困惑的行为。
特别是,有些浏览器和某些条件实际上
console.log(..)并没有立即输出它给出的内容。这可能发生的主要原因是因为 I/O 是许多程序(不仅仅是 JS)的一个非常缓慢且阻塞的部分。因此,浏览器在后台异步处理控制台 I/O 可能会更好(从页面/UI 角度),而您甚至可能不知道发生了这种情况。
从输出中可以看出,console.log(a)实际上是在 之前执行alert(11)的,只是 a 的值没有立即显示。
我们点击确定按钮后,
如您所见,div标签位于结果的第一行。undefined下一行中的 是 的结果alert(11)。