减少使用setInterval

setInterval很少使用在生成环境下,因为有如下几个缺点

缺点一:setInterval无视代码错误

setInterval执行的代码即使代码报错,它还会持续不断(不管不顾)地调用该代码

缺点二:setInterval无视网络延迟

假设你每隔一段时间就通过Ajax轮询一次服务器,看看有没有新数据(注意:如果你真的这么做了,那恐怕你做错了;建议使用“补偿性轮询”(backoff polling))。而由于某些原因(服务器过载、临时断网、流量剧增、用户带宽受限,等等),你的请求要花的时间远比你想象的要长。但setInterval不在乎。它仍然会按定时持续不断地触发请求,最终你的客户端网络队列会塞满Ajax调用。


CJS、ESM、UMD模块化标准

1. CommonJS

node.js的实现中采用了CommonJS标准的一部分,并在其基础上进行了一些调整

使用方式

使用requireexports或者module.exports进行模块的导入导出

1
2
3
4
5
6
7
8
9
10
// node.js为了简化操作,有var exports = module.exports
// 两者一致,那就说明,我可以使用任意一方来导出内部成员
console.log(exports === module.exports) // true

// 导出的对象近似于此种形式,exports相当于module.exports的引用
// var module = {
// exports: {
// foo: 'bar',
// }
// }

Jest自动化测试入门

1. 环境搭建

1
npm install --save-dev jest

然后在项目根目录下,控制台执行如下命令,就会初始化jest配置 jest.config.js

1
npx jest --init

深拷贝、浅拷贝

深拷贝、浅拷贝

1. 区别

浅拷贝:复制基本类型和引用类型

深拷贝:引用类型所指向的内存空间也完全拷贝


防抖和节流

debounce

上图是对鼠标进行监听,事件执行的很频繁,如果执行的事件是对接口的请求,那么会在短时间内发起大量重复请求,所以我们需要防抖或者节流进行解决。


js中的变量声明

一、 es5和es6中变量声明的区别

变量提升 块级作用域 重复声明
var
let、const 不会 不能

事件 Event

事件是您在编程时系统内发生的动作或者发生的事情——系统会在事件出现的时候触发某种信号并且会提供一个自动加载某种动作,列举一些可能发生的事件。

  • 用户在某个元素上点击鼠标或悬停光标。
  • 用户在键盘中按下某个按键。
  • 用户调整浏览器的大小或者关闭浏览器窗口。
  • 一个网页停止加载。
  • 提交表单。
  • 播放、暂停、关闭视频。
  • 发生错误。