Javascript的装载和执行
- 载入后马上执行
- 执行时会阻塞页面后续的内容(包括页面的渲染、其它资源的下载)
head里的
document.ready 和 window.onload 的区别
- jq中 (document).ready(function(){})这两个方法的效果都是一样的,都是在dom文档树加载完之后执行一个函数方法在DOM树加载完成后就会执行
- window.onload是在页面资源(比如图片和媒体资源,它们的加载速度远慢于DOM的加载速度)加载完成之后才执行
基本数据类型
6种,boolean,number,string,undefined,null,symbol
操作符的优先级
null是Object吗
虽然 typeof null会输出 object,但是这只是 JS 存在的一个悠久 Bug。在 JS 的最初版本中使用的是 32 位系统,为了性能考虑使用低位存储变量的类型信息,000 开头代表是对象,然而 null 表示为全零,所以将它错误的判断为 object 。虽然现在的内部类型判断代码已经改变了,但是对于这个 Bug 却是一直流传下来。
闭包
- 闭包是指:可以访问其他函数内部变量的函数
闭包作用
- 读取函数内部的变量
- 让这些变量的值始终保持在内存中。不会调用后被自动清除。
- 方便调用上下文的局部变量。利于代码封装。
js的事件流
- dom2中规定事件流包含三个阶段:
- 事件捕获阶段
- 事件目标阶段
- 事件冒泡阶段
- addEventListener是DOM2级事件新增的指定事件处理程序的操作
- 发布订阅模式
- 这个方法接收3个参数:
- 要处理的事件名
- 作为事件处理程序的函数(回调函数)
- 一个布尔值,true,表示在捕获阶段调用事件处理程序;false,表示在冒泡阶段调用事件处理程序。
- e.target和e.currentTarget的区别
currentTarget始终是监听事件者,即addEventListener的调用者
target是事件的真正发出者