输入url后及闭包

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


浏览器输入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的生命周期

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容