
javascript
Axizs
这个作者很懒,什么都没留下…
展开
-
数组的push、unshift、pop、shift方法实现
尾部添加(push)push() 方法将一个或多个元素添加到数组的末尾,并返回该数组的新长度。从解释中可以看出,push方法只要将要添加的元素依次放到数组的最后即可,不会改变原有数组元素的索引。所以循环参数列表,将新元素依次放到数组的最后即可。Array.prototype._push = function(...value) { for (var i = 0; i < argumen...原创 2020-04-28 09:57:09 · 2571 阅读 · 1 评论 -
竞态请求的Redux中间件解决方案
这个问题来源于一次无意中在项目里发现的bug,场景是组件会在切换项目后重新渲染,每次重渲染后,组件挂载完毕会请求对应的当前项目的数据,存到store中展示到页面上。但网络请求时间的长短是难以预测的,这就引发了一个问题:切换到B项目,请求发出了但还没回来,这时候再切换到A项目。那么现在同时存在两个请求,先前的请求B和新的请求A。请求A的速度比较快,马上成功了,将数据存到store中,展示出来。...原创 2019-12-09 09:27:58 · 449 阅读 · 0 评论 -
JS数组Reduce方法详解
概述一直以来都在函数式编程的大门之外徘徊,要入门的话首先得熟悉各种高阶函数,数组的reduce方法就是其中之一。reduce方法将会对数组元素从左到右依次执行reducer函数,然后返回一个累计的值。举个形象的例子:你要组装一台电脑,买了主板、CPU、显卡、内存、硬盘、电源…这些零件是组装电脑的必要条件。装的过程可以简单概括为拆掉每个零件的包装,再装到一起。类比一下reduce函数就可以明白...原创 2019-11-18 10:37:34 · 1053 阅读 · 0 评论 -
Promise原理解析
写在前面promise经常用,但不知道其实现原理。抽时间研究了一下实现,发现东西真的不少。阅读文章之前需要了解其用法,结合用法看文章可能更容易理解。结构先看一下简单的用法。const promise = new Promise((resolve, reject) => { setTimeout(() => { resolve('success') })...原创 2019-10-14 07:02:54 · 238 阅读 · 0 评论 -
函数的防抖和节流是个啥???
曾经面试时候被问到过这个,年少的我一脸无知。。。后来工作中遇到了一个场景:输入名称的同时去服务器校验名称是否重复,但发现之前的代码竟然都没做限制,输入一次发一次请求。简直忍不了,就在项目的utils里加上了防抖函数。正好做一个总结,加深印象。函数防抖和节流,都是控制事件触发频率的方法。应用场景有很多,输入框持续输入,将输入内容远程校验、多次触发点击事件、onScroll等等。为了说明问题,...原创 2019-09-06 15:23:08 · 291 阅读 · 0 评论 -
今天,我明白了JS事件循环机制
写在前面js是一门单线程的编程语言,也就是说js在处理任务的时候,所有任务只能在一个线程上排队被执行,那如果某一个任务耗时比较长呢?总不能等到它执行结束再去执行下一个。所以在线程之内,又被分为了两个队列:同步任务队列异步任务队列举个例子来说:比如你去银行办理业务,都需要领号排队。银行柜员一个个办理业务,这时这个柜员就相当于一个js线程,客户排的队就相当于同步任务队列,每个人对于柜员相...原创 2019-09-07 18:09:28 · 488 阅读 · 0 评论 -
关于变量提升和函数提升的理解
变量提升:变量的声明写在可以在使用变量之后;函数提升:函数可以先调用,后声明;上面先解释了下我理解的这两个概念的定义。要真正理解它们,最好从变量对象的角度出发。引出变量对象的概念,要先理解执行上下文,也就是当控制器执行到可执行代码的时候,就会生成一个执行上下文,也就是代码的执行环境,会产生一个作用域。这个执行上下文的生命周期有两个阶段:创建阶段 和 代码执行阶段创建阶段就会创建变量对象,创建...原创 2019-09-11 10:23:12 · 621 阅读 · 0 评论