JavaScript
总结JavaScript中的常用问题
LV0720
这个作者很懒,什么都没留下…
展开
-
闭包定义及使用
闭包:有权访问另一个函数作用域中的变量的函数,创建闭包常见的方式就是在一个函数内部创建函数。为什么会使用闭包:全局变量易被污染,局部变量又不可全局访问,这时就可以使用闭包,来达到既可全局访问,有不会被污染的效果。function foo(){ var local = 1; function inter(){ local++; console.log(local); } return inter;}var outer = foo();outer();//2闭包的弊端:内存占用大,原创 2020-06-29 13:56:55 · 157 阅读 · 0 评论 -
javascript的防抖、节流以及应用场景
定义与应用场景防抖: 规定时间内没有再次触发,才能真正触发成功,若在规定时间内再次触发了则不能触发成功并且重新计时,将一段时间内连续的多次触发转化为一次触发。情景:页面resize事件,页面适配时,根据最终呈现的页面情况进行dom渲染,一般使用防抖,只需判断最后一次的变化情况;search搜索联想,用户在不断输入值时,用防抖来节约请求资源。节流: 持续触发时,保证规定时间间隔内触发一次。情景:一般是onrize,onscroll等这些频繁触发的函数,如获取滚动条的位置,然后执行下一步动作;鼠标不断点原创 2020-07-02 16:02:37 · 627 阅读 · 0 评论 -
JavaScript阻塞及解决方法
一、阻塞出现原因是:JavaScript是单线程。二、改善方法1.简单但不治本的方法将script加载放在body的最后面,这样即使脚本之间阻塞了也不影响其他资源的加载,页面已经呈现出来,不至于显得很慢。将多个相关的JavaScript文件合并为一个JavaScript文件,减少脚本之间的阻塞。2.无阻塞技术使用defer和async<script src="" async><script src="" defer>async是异步执行,defer是延迟加原创 2020-06-29 15:17:09 · 2728 阅读 · 0 评论 -
JavaScript宏队列微队列以及事件轮回
javascript在执行时,遇到异步执行的方法,不会等异步方法返回结果再继续向下执行,而是先将异步方法放到一个队列中,然后继续执行,最后主线程空闲时,再按照顺序执行队列里的异步方法,叫做事件轮回。队列又分为宏队列和微队列,将宏任务放在宏队列,微任务放在微队列,在执行时遵循先全局方法,后微任务,最后宏任务的顺序。宏任务:setTimeout, setInterval, setImmediate, I/O, UI rendering.微任务:process.nextTick, Promise.then,原创 2020-06-09 16:58:45 · 364 阅读 · 0 评论 -
javascript数据类型和判断方法以及对象的拷贝
数据类型JavaScript数据类型有7种,分别是Number、String、Boolean、undefined、Null、Symbol和Object。基本数据类型为Number、String、Boolean、undefined、Null、Symbol,引用数据类型为Object(包括Array[]和Object{})。基本数据类型存储在栈中,引用数据类型存储在堆中。对象不能直接复制是会出现问题的,源对象和目标对象修改后互相影响:var obj = { foo: "foo", bar: "bar"原创 2020-06-08 10:01:21 · 156 阅读 · 0 评论 -
javascript的call apply bind区别
javascript的call apply bind区别三者都是可以改变this指向的。改变f1的this指向如下://不含入参var changeThis(f1,targetFn){ f1.call(targetFn); //f1.apply(targetFn); //f1.bind(targetFn)();}//含有两个入参var changeThis(f1(value1,value2),targetFn){ f1.call(targetFn, ''value1","value2")原创 2020-05-26 15:42:14 · 162 阅读 · 0 评论