![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
js学习
霸气灬剑意
这个作者很懒,什么都没留下…
展开
-
js学习-setTimeout,promise和async执行顺序
一道面试题setTimeout(() => { console.log('setTimeout');}, 0)async function async1() { console.log('async1 start'); await async2(); console.log('async1 end');}async function async2() { console.log('async2');}console.log('script s原创 2021-04-20 22:30:44 · 445 阅读 · 0 评论 -
js学习-数组的扁平化处理
数组的扁平化处理1.使用flat() const arr = [1, [2, [3, [4, 5]]], 6];//=>[1,2,3,4,5,6] //1.使用flat() const arr1 = arr.flat(Infinity); console.log(arr1);2.使用正则表达式 const arr = [1, [2, [3, [4, 5]]], 6];//=>[1,2,3,4,5,6] //2.使用原创 2021-04-13 21:02:54 · 100 阅读 · 0 评论 -
js学习-event loop
event loop事件循环机制 由三部分组成:1.调用栈 2.微任务队列 3.消息队列。event-loop开始的时候会从全局一行一行的执行遇到函数调用会压入到调用栈中被压入的函数被称之为帧当函数返回后会从调用栈中弹出。function fun1() { console.log(1) } function fun2() { console.log(2) fun1() con原创 2021-04-13 19:19:48 · 62 阅读 · 0 评论 -
js学习-手写filter
手写filterfilter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。 var arr = [1, 2, 3] var array = arr.filter((item, index) => { return item > 2 }) console.log(array); function filter(arr, filterCallBack) { /原创 2021-04-13 18:33:50 · 724 阅读 · 1 评论 -
js学习-手写map
手写map var arr=[1,2,3] //对数组中每个元素*2 var array=arr.map((item,index)=>{ return item*2 }) console.log(array); function map(arr,mapCallBack){ //检查传入的参数是否正确(第一个参数是否是数组,数组长度不为0,第二个参数是否是function)原创 2021-04-13 18:22:24 · 825 阅读 · 0 评论 -
js学习-js哪些操作会造成内存泄漏?
js哪些操作会造成内存泄漏?内存泄漏:指一块被分配的内存既不能使用,又不能回收,直到浏览器进程结束。1.JS的回收机制JavaScript垃圾回收的机制很简单:找出不再使用的变量,然后释放掉其占用的内存,但是这个过程不是实时的,因为其开销比较大,所以垃圾回收系统(GC)会按照固定的时间间隔,周期性的执行。到底哪个变量是没有用的?所以垃圾收集器必须跟踪到底哪个变量没用,对于不再有用的变量打上标记,以备将来收回其内存。用于标记的无用变量的策略可能因实现而有所区别,通常情况下有两种实现方式:标记清除和引用转载 2021-04-13 16:34:12 · 185 阅读 · 0 评论 -
js学习-作用域概念以及作用域预编译
作用域:一般理解为一个变量的作用范围。1.全局作用域(1)全局作用域在页面打开时被创建,页面关闭时被销毁。(2)编写在script标签中的变量和函数,作用域为全局,在页面的任意位置都可以访问到。(3)在全局作用域中有全局对象window,代表一个浏览器窗口,由浏览器创建,可以直接调用。(4)全局作用域中声明的变量和函数会作为window对象的属性和方法保存。2.函数作用域(1)调用函数时,函数作用域被创建,函数执行完毕,函数作用域被销毁。(2)每调用一次函数就会创建一个新的函数作用域,他们之原创 2021-04-12 21:32:06 · 73 阅读 · 0 评论 -
js学习-节流函数
节流函数当持续触发事件的时候保证一段时间内只调用一次事件处理函数,一段时间内只做一件事情。代码:<button id="button">点击</button> <script> function throttle(callback, wait) { let timeout; let startTime = new Date(); return function () {原创 2021-04-12 20:44:34 · 78 阅读 · 0 评论 -
js学习-防抖函数
防抖函数当持续触发事件一定时间内没有再触发事件事件处理函数才会执行一次如果设定的时间到来之前又一次触发了事件就重新开始延时。触发事件一段时间内没有触发事件执行肯定是定时器。(在设定的时间内又一次触发了事件重新开始延时代表的就是重新开始定时器)(那么意味着上一次还没有结束的定时器要清除掉重新开始)代码:<input type="text" id="input"><script> // 简单的防抖动函数 function debounce(wait,callback)原创 2021-04-12 20:27:43 · 83 阅读 · 0 评论 -
js学习-深拷贝和浅拷贝
js基本数据类型和引用数据类型js常用的基本数据类型包括undefined、null、number、boolean、string。js的引用数据类型也就是对象类型Object,比如:Object、array、function、date等。赋值、浅拷贝、深拷贝赋值:当我们把一个对象赋值给一个新的变量时,赋的其实是该对象的在栈中的地址,而不是堆中的数据。也就是两个对象指向的是同一个存储空间,无论哪个对象发生改变,其实都是改变的存储空间的内容,因此,两个对象是联动的。浅拷贝:重新在堆中创建内存,拷贝前后原创 2021-04-11 17:40:26 · 67 阅读 · 0 评论 -
js学习-箭头函数中的this指向
箭头函数中的this是在定义函数的时候绑定,而不是在执行函数的时候绑定。箭头函数中,this指向的固定化,并不是因为箭头函数内部有绑定this的机制,实际原因是箭头函数根本没有自己的this,导致内部的this就是外层代码块的this。正是因为它没有this,所以也就不能用作构造函数。箭头函数中的this是在定义函数的时候绑定。 var x = 11; var obj = { x: 22, say: () => {原创 2021-04-11 15:52:54 · 268 阅读 · 0 评论 -
js学习-this指向
this指向案例:var name = 222 var a = { name: 111, say: function () { console.log(this.name) } } var fun = a.say fun()//函数直接调用 等同于fun.call(window) 也就是this指向window this.name=wind原创 2021-04-11 14:45:39 · 96 阅读 · 0 评论 -
js学习-预编译
预编译做了哪些事情?1.创建ao对象(js的变量对象,供js引擎自己去访问)2.找形参和变量的声明,作为ao对象的属性名,值为undefined3.实参和形参相统一4.找函数声明,会覆盖名字一样的变量声明下面是一个例子:function fn(a, c) { console.log(a)// function a() { } var a = 123 console.log(a)// 123 conso原创 2021-04-11 14:22:59 · 48 阅读 · 0 评论