客户端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)