map与Object区别
js内存泄漏防范之道
Index | 起因 | 如何避免 |
---|---|---|
1 | 意外的全局变量(1.给未声明的变量赋值,2.使用指向全局对象的this) | 严格模式可以避免严格的全局变量 |
2 | 闭包(闭包可能会让某些变量一直处于被引用状态,即使它的执行上下文和作用域已经不存在了) | 闭包是js的语言特性之一,如果无法避免,需要注意以下两点:1.清楚闭包是何时创建的,以及哪些对象会被保留在内存中;2.清楚闭包的生命周期和用途(尤其是当作回调函数的时候) |
3 | 定时器(在 setTimeout 或 setInterval 的回调函数中引用某些对象,在定时器结束前,是不会回收的) | 1.注意被定时器回调函数引用的对象;2.使用定时器返回的句柄,在必要时清除它 |
4 | 事件监听器(活动的事件监听器会阻止作用域内的变量被 GC 回收) | 事件监听器不再需要时,要记得解除绑定 |
5 | Map,Set(Map,Set里面的key也会算作一次引用) | 在需要的时候使用WeakMap,WeakSet |
6 | 分离的DOM元素(如果 DOM 节点被 JavaScript 代码直接引用,即使从 DOM 树分离,也不会被 GC 回收) | 把DOM 引用限制为局部作用域 |
Hash路由与History路由区别(记住如何实现就能理解原理)
Hash路由 | History路由 | |
---|---|---|
定义 | 监听 url 中 hash 的变化,然后渲染不同的内容,这种路由不向服务器发送请求,不需要服务端的支持 | 监听 url 中的路径变化,需要客户端和服务端共同的支持 |
需要监听的事件 | 当页面中的 hash 发生变化时,会触发hashchange(event: {oldUrl, newUrl}) 事件,但第一次进入到页面时并不会触发这个事件,所以我们还需要监听load() 事件 |
load() , popState() , 由于pushState和replaceState被调用时,是不会触发popState事件的,所以我们需要手动添加pushState() 和replaceState() 事件 |
获取方法 | window.location.hash | window.location.pathname |
对象方法 | window.history.back() .forward() .go(number) .pushState(obj, title, url) .replaceState(obj, title, url) 调用这几种方式时,都会只是修改了当前页面的 URL,页面的内容没有任何的变化。 |
|
应用场景 | 1.仅切换 url 而不发送请求的特性,可以在前端渲染中使用,例如首页是服务端渲染,二级页面采用前端渲染;2.可以添加路由切换的动画;3.在浏览器中使用类似抖音的这种场景时,用户滑动切换视频时,可以静默修改对应的 URL,当用户刷新页面时,还能停留在当前视频。 | |
优点 | 不需要服务端支持,纯客户端路由 | 1.pushState() 可以通过stateObject 参数添加任意类型的数据到记录中。2.SEO友好 |
缺点 | 1.传参数不方便,只能添加短字符串。2.传到服务端没有hash值,刷新无法直接从服务端获取状态。3.SEO不友好 | 前端的URL必须和向发送请求后端URL保持一致 |
大部分场景都应该使用history路由,因为我们的目的是希望有前端路由提高效率,但是后端路由大部分场景也都是不能替代的,因为我们需要服务端渲染来做SEO优化。使用hash路由会导致没法儿做后端路由。
React Native路由
src和href区别
介绍react+redux+saga
http状态码
BFC,以及它的触发条件
BFC(Block Formatting Context)块级格式化上下文,是用于布局块级盒子的一块渲染区域。MDN上的解释:BFC是Web页面 CSS 视觉渲染的一部分,用于决定块盒子的布局及浮动相互影响范围的一个区域。
触发方式:
left
、right
auto
、scroll
、hidden
inline-block
、table-cell
、table-caption
、table
、inline-table
、flex
、inline-flex
、grid
、inline-grid
absolute
、fixed
执行上下文
执行上下文是当前代码的执行环境。
分为三种:1.全局执行上下文,2.函数执行上下文,3.eval执行上下文
三个属性:1.变量对象,2.作用域链,3.this
普通函数和箭头函数区别
HTTP1.0、HTTP1.1 和 HTTP2.0 的区别
DNS 域名解析过程
浏览器输入url到网页显示发生的过程
TCP和UDP区别
二进制运算
精度丢失