JS
巴拉巴拉小魔仙_
这个作者很懒,什么都没留下…
展开
-
防抖和节流
防抖:使用场景:频繁输入或操作,最后才触发如:1.监听输入框,用户输入完成或暂停后,才触发 change 事件2.防止按钮重复点击/** * @desc 函数防抖 * @param fn 函数 * @param delay 延迟执行毫秒数 */ function debounce(fn, delay = 300) { // timer 是闭包中的 let timer = null; return function () {原创 2022-02-03 14:18:30 · 612 阅读 · 0 评论 -
封装事件监听函数
利用事件冒泡的机制,把事件绑定到父元素上,适用于瀑布流场景,可以减少浏览器的内存占用。<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>事件</title></head><body> <div> <button id="btn">按钮</button>原创 2022-01-26 21:02:43 · 909 阅读 · 0 评论 -
JS几种遍历方式
for、for...in、forEach ,都是常规的同步遍历for...of 常用于异步的遍历使用场景:function multiple(num, n) { return new Promise((resolve, reject) => { setTimeout(() => { resolve(num * n); }, 1000); })}let n = 5;let arr = [1, 2, 3, 4];// 同步循环。一瞬间执行原创 2022-01-25 19:36:29 · 2372 阅读 · 0 评论 -
async / await 和 Promise 的关系
背景:1.异步回调地狱 callback hell;2.Promise 是基于 then catch 的链式调用,但也是基于回调函数;3. async / await 是同步语法去编写异步代码,彻底消灭回调函数,但它也只是一个语法糖,从语法层面去解决 回调地狱;关系:async / await 和 Promise 并不互斥,二者相辅相成。async / await 并不能改变异步的本质( js是单线程的,异步需要回调,都是要基于 event loop 来实现)。await 后面的原创 2022-01-25 19:01:42 · 1926 阅读 · 2 评论 -
Promise 的理解
1.三种状态:pending:初始状态 fulfilled: 意味着操作成功完成 rejected: 意味着操作失败2.状态变化:pending ---> fulfilled 或 pending --> rejected (变化不可逆)3.then 和 catch 对状态的影响:then 和 catch 正常状态都会返回 resolved,里面有报错则返回 rejected4.链式调用// 例一Promise.resolve.th...原创 2022-01-25 14:15:52 · 472 阅读 · 0 评论 -
JS实现深拷贝
/** * 深拷贝 * 1.注意判断类型 * 2.注意判断是数组还是对象 * 3.递归 */ let obj1 = { name: 'zhangsan', address: { city: '杭州', }, friends: ['a', 'b'],}// let obj2 = obj1; // 浅拷贝let obj2 = deepClone(obj1); // 深拷贝obj2.address.city = '上海';obj2.friends[1] = 'c';cons.原创 2022-01-24 22:53:55 · 224 阅读 · 0 评论