输入url后及闭包

2019-08-14  本文已影响0人  宁不空

复杂的事情讲清楚,你才是真正明白了。


浏览器输入URL之后发生了什么

一共发生了6件事

  1. DNS解析
    • 将域名解析为IP地址
    • 首先读取浏览器缓存
    • 浏览器缓存没有,会读取本地缓存
    • 本地缓存没有,会读取路由缓存
    • 路由缓存没有,会读取运营商缓存
    • 运营商也没有的话,会递归匹配,从com依次,如果没有匹配到,返回报错
  2. tcp握手
    • 三次握手
    • 第一次是浏览器发送请求,通知服务器,让服务器做好准备接收
    • 第二次是服务器发送,通知浏览器已经做好准备,浏览器可以发送
    • 第三次是浏览器再次发送,确保正确连接
  3. 发送请求
    请求报文 协议,请求头,请求体等
  4. 接收响应
    响应报文
  5. 渲染页面
    浏览器调用各种解析器 解析返回的页面
    html 解析为dom树
    css解析为 cssom
    合并生成渲染树
    计算布局 生成页面
    这个步骤会执行多次
  6. 断开连接 tcp四次挥手

闭包

闭包可以理解为一个对象保存着以键值对存在的值
形成条件:

  1. 函数嵌套
  2. 内部函数可以访问外部函数的局部变量
    优点:
    延长外部函数局部变量的生命周期
    缺点:
    内存泄露,所以在闭包使用完毕之后应该及时清除

例子:

/**
*  按照形成条件可以很简单的写出一个闭包函数
*/
function fn() {
  var count = 1;
  return function() {
    count++;
    console.log(count);
  }
}
var fn2 = fn();
fn2(); // 输出2;
fn2(); // 输出3
闭包.png

从输出可以看出闭包延长了外部函数fn中的局部变量count的生命周期

上一篇 下一篇

猜你喜欢

热点阅读