五月份
一只白猫罢了
doctrine doctrine
展开
-
2021.05.25 vue的 ref 和 $refs
官方文档:特殊attribute - ref 官方文档就说了这么点,他越简练,我越害怕。原创 2021-05-25 17:45:58 · 64 阅读 · 0 评论 -
2021.05.19 js十大排序汇总
1. 冒泡排序 比较相邻的两个元素,如果前一个比后一个大,则交换位置。 第一轮的时候最后一个元素应该是最大的一个。 按照步骤一的方法进行相邻两个元素的比较, 这个时候由于最后一个元素已经是最大的了, 所以最后一个元素不用比较 function bubbleSort(){ var arr = [23,9,78,6,45]; console.log("排序前:"+ arr); for(var i = 0;i < arr.length-1; i++)原创 2021-05-19 14:27:49 · 67 阅读 · 0 评论 -
2021.05.19 JS为何是单线程?
概念 进程就是一个公司,每个公司都有自己的资源可以调度,每个公司相互独立。 线程就是公司里的员工,多个员工一起合作完成任务,公司里可以有多个员工,员工之间可以共享公司的空间。 进程:是CPU分配资源的最小单位(是能拥有资源和独立运行的最小单位) 线程:是CPU调度的最小单位(线程是建立在进程的基础上,的一次程序运行单位,一个进程可以有多个线程) 浏览器是多进程的。放在浏览器中,每打开一个tab页面,其实就是新开了一个进程,在这个进程中,还有ui渲染线程,js引擎线程,http请求线程等。 所以,浏览器原创 2021-05-19 11:03:39 · 59 阅读 · 0 评论 -
2021.05.18 了解一下BFC
定义 BFC(Block formatting context)直译为"块级格式化上下文"。它是一个独立的渲染区域,只有Block-level box参与, 它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干。原创 2021-05-18 19:26:39 · 53 阅读 · 0 评论 -
2021.05.17 冒泡排序 && 字符串截取 && 数组字符串数字之间的转换 【面经】
// [9, 23, 46] => 94623 (排列组合得最大数字) // 数组首位截取并排序,按顺序组成最大数字 const arr = [1, 23, 46, 78, 100] const fArr = [] arr.forEach(item => { const str = item.toString() fArr.push(str.substring(0, 1)) }) console.log(fArr)原创 2021-05-17 15:41:20 · 55 阅读 · 0 评论 -
2021.05.14 数组取并集 && 交集【面经】
// [1, 2, 3, 6, 7] [8, 2, 4, 6, 9] 如何取交集[2,6] // 如何取并集[1, 8, 2, 3, 4, 6, 7, 9] const arr1 = [1, 2, 3, 6, 7] const arr2 = [8, 2, 4, 6, 9] const arrN1 = [] const arrN2 = [...arr1, ...arr2] arr1.forEach(i => { arr2.forEa...原创 2021-05-14 18:08:10 · 78 阅读 · 0 评论 -
2021.05.14 promise的API们
promise.all Promise.all可以将多个Promise实例包装成一个新的Promise实例。 同时,成功和失败的返回值是不同的,成功的时候返回的是一个结果数组,而失败的时候则返回最先被reject失败状态的值。 Promise.all 获得的成功结果 的数组里的 数据顺序 和 接收到的实例数组顺序是一致的。 Promise.race Promse.race就是赛跑的意思 Promise.race([p1, p2, p3])里面哪个结果获得的快,就返回那个结果,不管结果本身是成功状态还是原创 2021-05-14 14:55:07 · 48 阅读 · 0 评论 -
2021.05.13 数组去重 && 字符串首字母大写【面经】
clickBtn () { // const arr = Array.from(new Set(this.toLowerCase.split(' '))) // 数组去重 [ES6] const a = this.toLowerCase.split(' ') // 数组去重2 [ES5] for (var i = 0; i < a.length; i++) { for (var j = i + 1; j < a.length; j++)...原创 2021-05-13 20:14:33 · 62 阅读 · 0 评论 -
2021.05.13 关于变量提升
摘自变量提升 console.log(a); var a = 1;// 输出 undefined 使用 var 来声明变量的时候,会提到当前作用域的顶端,而赋值操作在原处不变 变量提升不能跨script console.log(a) // undifined if(false){ var a = 1; } 尽管 if 不通过,还是提升了 函数会优先于变量 先提升 暂存性死区(针对let和const) 当当前作用域与父级作用域都存在同一变量名的变量时,不能在访问父级的同名变量 ...原创 2021-05-13 19:27:18 · 51 阅读 · 0 评论 -
2021.5.11 this指向问题
this原理 this用法原创 2021-05-11 11:29:03 · 48 阅读 · 0 评论 -
2021.5.10 浅谈async / await
异步解决方案 (即你需要异步像同步一样执行,需要异步返回结果之后,再往下依据结果继续执行) XMLHttpRequest对象,依靠回调处理异步代码,不便于维护(回调地狱) promise 的.then方法附加回调函数,代码井然有序,(非阻塞) async / await 基于promise实现,兼容promise的API,使用方式更像同步(非阻塞) async 声明一个异步函数(asynchronous) 自动将一个常规函数转换成一个promise,返回的也是一个promise对象 只有async原创 2021-05-10 18:04:58 · 76 阅读 · 0 评论 -
2021.5.10 关于Promise (转自阮一峰)
概念 promise就是一个容器,里面保存着未来才会结束的事件的结果。(通常为异步操作的结果) promise是一个对象,可以获取异步操作的消息。 promise对象是一个构造函数,用来生成promise实例。 特点 promise对象的状态不受外界影响。三种状态: pending(进行中),fulfilled(已成功),rejected(已失败)。只有异步操作的结果能决定当前状态。其他操作都无法改变状态。 一旦状态改变,就不会再变,任何时候都可以得到这个结果。promise状态的改变只有两种可能:从原创 2021-05-10 11:49:09 · 396 阅读 · 1 评论 -
2021.5.7 关于闭包
1. 闭包概念 函数作用域是封闭的,独立的,外部执行环境访问不了的 闭包,有权访问另一个函数作用域中的变量的函数 闭包是一个函数,且存在于另一个函数当中,可访问父级函数的变量,且不会被销毁 function person(){ var name = '有鱼'; function cat(){ console.log(name); } return cat; } var per = person();// per的值就是return后的结果,即cat函数 p原创 2021-05-07 16:47:55 · 67 阅读 · 0 评论 -
2021.5.7 自己写一个防抖/节流函数吧
写一个utils: /* * 自己写一个防抖函数吧 (注意维护同一个timer) * */ export function debounce (fn, delay) { let timer = null return function () { const args = arguments const that = this const triggleNow = !timer if (triggleNow) { fn.apply(that, args)原创 2021-05-07 16:11:01 · 115 阅读 · 0 评论