客户端web应用生命周期阶段
- 页面构建
- 解析html代码并构建dom
- 执行JavaScript代码
- 全局代码和函数体代码
- 不同:执行位置不同,全局函数有JavaScript引擎以一种直接的方式自动执行,函数代码必须被其他代码调用
- 全局代码和函数体代码
- 事件处理
- 浏览器执行环境核心思想:同一时刻只能执行一个代码片段,单线程执行模型
- 事件队列:实现浏览器需要跟踪已经发生但尚未处理的一种方式。
- 注册事件处理器的原因:事件的发生没有规律顺序,所以必须在事件被处理之前告诉浏览器我们要处理哪个事件
- 注册事件的两种方式:
- 通过把函数给某个特殊属性
例:window.load = function(){}
但是存在缺点,一次只能注册一个事件。 - 通过使用内置addEventListener
例:document.body.addEventListener("mousemove",function(){ console.log("mousemove"); })
可以给一个元素注册多个事件,较为常用
- 通过把函数给某个特殊属性
函数
- 函数和对象的区别:函数是可调用的
- 如何判断一个对象是函数还是对象 typeof abba ==='function'
- 回调函数意义:在执行过程中,我们建立的函数会被其他函数在稍后的合适时间点再回来调用
- 回调函数用途:
1.存储函数
2.自记忆函数 - 立即函数: 为什么被括号包裹:纯语法层面的原因,为了把函数声明转化成函数表达式
- 形参和实参: ... arguments es6形参可以有表达式
function(a,b=3)