2023年5月之前的blog存档

let、const和var的区别

变量提升 变量提升: 所有的声明都会提升到作用域的最顶上去。 函数声明的优先级高于变量声明的优先级,并且函数声明和函数定义的部分一起被提升。 一个变

HMR

详解 https://juejin.im/post/5df36ffd518825124d6c1765 https://juejin.im/post/5d8db37051882530d438535c https://juejin.im/post/5c86ec276fb9a04a10301f5b https://zhuanlan.zhihu.com/p/30669007 概念 Hot Module Replacement(以下简称 HMR) 当你对代码进行修改并保存后,webpack 将对代码重新打包,并将新的模块发送到浏

箭头函数

箭头函数跟普通函数的区别 箭头函数没有 this。 函数不会创建自己的 this,它只会从自己的作用域链的上一层继承 this 通过 call 或 apply 调用不会改变 this 指向。

Call、apply、bind实现

call 更改 this 指向,第一个参数作为函数的 this 指向,其余参数作为函数的参数,执行参数。 object.call(obj,arg1,arg2,...) 基本思路 将函数作为对象的属性 执行函数 删除函数 实现 在线:http

BFC

一句话总结 BFC是一个隔离的独立容器,内部的元素与外界的元素互不干扰。 前置知识 常见定位方案 普通流 (normal flow) 在普通流中,元素按照其在 HTML 中的先后位置至

Diff算法

本质 diff本身就是上一帧的元素树与当前帧的元素树进行比对。 react 正常两棵树完全比对的算法复杂度是O(n 3 )。 将两颗树中所有的节点一一对比需要O

Fiber

一句话总结 React内部实现的一套状态更新机制。将同步的更新变为可中断的异步更新。支持任务不同优先级,可中断与恢复,并且恢复后可以复用之前的

CookieAndToken

cookie 登陆后后端生成一个sessionid放在cookie中返回给客户端,并且服务端一直记录着这个sessionid,客户端以后每次请求都会带上

前端模块化输出

模块化主要是用来抽离公共代码,隔离作用域,避免变量冲突等。 无模块化 CommonJS规范 AMD规范 CMD规范 ES6模块化 适用 服务端 浏览器端 浏览

发布订阅模式

概念 发布-订阅模式其实是一种对象间一对多的依赖关系,当一个对象的状态发送改变时,所有依赖于它的对象都将得到状态改变的通知。 订阅者(Subsc

npm install过程

模块安装过程 查找此模块是否已经在node_modules中安装过,然后再.npm 缓存中查看是否有同版本缓存 如果有缓存,直接使用缓存 没有缓存去

三次握手、四次挥手

一图总结 基本概念 消息类型 描述 ACK acknowledge确认标志,为1表示确认号有效,为0表示报文中不包含确认信息,忽略确认号字段。帮助对方确认

Http

概念 HTTP是一种超文本传输协议(Hypertext Transfer Protocol),HTTP是一个基于TCP实现的应用层协议。一个两点之间传输数据的约

js的异步

js是单线程语言,一次只能进行一个任务。js通过事件循环来解决异步任务。 1. 回调函数(callback) setTimeout(() => { callback() }, 1000) 缺点:回调地狱,不能用 try catch

关于元素隐藏

常用的隐藏方法: opacity :0 display :none visibility :hidden 设置 fixed 并设置足够大负距离的 left top 使其“隐藏” 用层叠关系 z-index 把元素叠在最底下使其“隐藏”。 前三种方法的一些区别 opacity: 0 visibility:

防抖节流

防抖(debounce) 作用:触发多次事件,只执行最后一次。 原理:通过setTimeout延迟执行事件,每次触发函数判断定时器是否存在,存在

判断数据类型

总结 Object.prototype.toString.call(obj)最准确。 typeof 只能检测基本数据类型。 利用 typeof 来判断number, string, object, boolean, function,