每日杂学:尾递归优化、浏览器的四个存储、延迟加载JS

一、尾递归优化

  • 弊端:当我们使用递归方法时,每一个递归调用都会在内存中为其分配一块新的空间(栈帧)。如果递归深度过大,这可能会导致栈溢错误。
  • 优化原理:尾递归优化的目的是重新组织递归函数,使其每次递归调用时重用当前的栈帧,而不是为每次调用创建一个新的栈帧。在尾递归版本中,所有需要的信息都会被传递给下一个递归调用
  • 为什么尾递归优化有用?
    性能:因为它只使用一个栈帧,不需要为每次递归调用分配新的内存。
    不会导致栈溢出:由于不为每次调用创建新的栈帧,所以深度很大的递归也不会导致栈溢出。
    参考链接:https://blog.csdn.net/weixin_43850639/article/details/132610241

二、浏览器的四个存储:cookie(httponly)、localStorage、sessionStorage、IndexedDB 对比

  • 大小: cookie < localStorage/sessionStorage << IndexedDB
  • 生命周期: sessionStorage < cookie (如果设置了过期时间) = localStorage = IndexedDB
  • 与服务器交互: 只有cookie会随HTTP请求自动发送。
  • 结构: 只有IndexedDB提供了数据库的功能和结构。

三、 延迟加载JS有哪些方式?

  • 使用deferasync

async解析过程:
1、下载js与html解析是并行的
2、下载完js就立刻执行
3、async的执行顺序是:谁先下载完,谁先执行(如果a.js依赖b.js,俩同时导入,就不能用async,因为此时顺序相当重要

defer解析过程:
1、下载js过程与html解析过程同步进行(与async相同)
2、当html完全解析完毕,才执行js(与async不同)
3、defer是按照顺序执行的,不存在谁先下载谁先执行

参考文章:https://blog.csdn.net/weixin_43850639/article/details/129342084

你可能感兴趣的:(javascript,开发语言)