所有输出会同时进浏览器控制台和下面的「迷你控制台」——示例里的结果直接留在页面上,方便对照。
下面四个脚本语句一模一样:读取 document.getElementById('late') 并记录它当时是否存在。差别只在位置和类型。
我是 #late,在 ①②③ 之后才出现
| 脚本位置与类型 | 当时拿到的 #late |
|---|
null 表示「执行时这个元素还不存在」,[object HTMLSpanElement] 表示拿到了。defer 脚本虽写在 #late 前面,执行却在解析完成之后——这就是它的价值。
分别点两个按钮:左边一次冒三条,右边只剩最后一条。这只是 addEventListener 的第一个好处,事件机制在第十五章展开。
模块有自己的作用域,只通过 export / import 对外交流——这是第二十章「模块化」的出发点。