- 博客(8)
- 收藏
- 关注
原创 JS函数式编程--函数组合应用
函数组合应用:由若干个纯函数、偏函数、柯里化函数组合成一个新的函数,同时,形成数据传递。挑选了一系列所需要的函数,把他们组合在一起,可以实现公共合作的效果。先来,直观感受一下函数组合:function compose(f, g){ return function(x){ return f(g(x)); //自右向左依次执行,称为左倾,使得x自右向左传递 }}...
2018-04-16 16:55:25 583 1
原创 JS函数式编程之--函数记忆
处理一件事物,有些是过程中已经运算好的,可以将它们存储起来,以便于之后的直接使用。相信大家都知道阶乘:n! = n*(n-1)!n! = n*(n-1)*(n-2)!...n! = n*(n-1)*(n-2)*...*1;阶乘封装成函数:function factorial1(n){ if(n === 0 || n === 1){ return 1; //函数...
2018-04-16 15:03:38 367
原创 JS函数式编程--纯函数(预防bug利器)
在数学中,函数的概念就是,对于输入 x 产生一个输出 y=f(x) 。纯函数的定义:对于相同的输入,永远会得到相同的输出,而且没有任何可观察的副作用,也不依赖外部环境的状态。(纯函数是指不依赖、不修改其作用域之外变量的函数)。eg1:反例var num = 18;function compare(x){ return x > num;}console.log(compare(20)...
2018-04-16 14:05:10 229
原创 JS高阶--惰性函数
JS惰性函数,是针对优化频繁使用的函数。常用于函数库的编写、单例模式之中。首先,写一个test函数,返回首次调用该函数的时间(使用new Date().getTime()),注意,返回首次调用时间。不好的写法:var t = null;function test () { if(t){ //缺点:每次调用函数就需要进行一次if判断。并且t会污染全局变量。【惰性函数就是...
2018-04-16 10:58:21 2321
原创 JS高阶--javascript数组扁平化
js扁平化分类:对象扁平化(深度很深的对象,经过扁平化编程深度为 1 的对象)、数组扁平化(降维过程,多维数组经过扁平化变成一维数组)。var arr = ['djl', 1,2,[[3,[4,[5,6,{}]]]],null,{},[[[[7]]], null],{}];//扁平化之后//resArr = ['djl', 1,2,3,4,5,6,{},null,{},7,null,{}];...
2018-04-15 22:58:42 563
原创 JS函数式编程--柯里化
定义:在数学和计算机科学中,柯里化是一种将使用多个参数的一个函数转换成一系列使用一个参数的函数的技术。作用:前端使用柯里化的用途主要就是简化代码结构,提高系统的维护性,一个方法,只有一个参数,强制了功能的单一性,很自然就做到了功能内聚,降低耦合。优点:降低代码的重复,提高代码的适用性。调用形式:function add(a,b,c,d){ return a + b + c + d;};va...
2018-04-15 21:42:27 442
原创 深入js运行机制之--setTimeout/setInterval【深度理解】
js是单线程机制。异步操作,如ajax请求、setTimeout/setInterval、js事件等,会等到同步程序执行之后,将异步操作放入任务队列中。 今天我们来看setTimeout/setInterval。 setTimeout的等待时间结束后,并不是直接执行的,而是推入浏览器的一个任务队列中,在同步队列结束后,再一次调用任务队列中的任务。(setInterval则是每隔...
2018-04-13 21:28:50 505
原创 js实现之--防抖节流【理解+代码】
在前端开发中,有一部分用户行为会频繁的触发事件,而对于DOM操作,资源加载等耗费性能的处理,很可能会导致卡顿,甚至浏览器的崩溃。防抖和节流就是为了解决这一类的问题。防抖: 理解:在车站上车,人员上满了车才发走重点是人员上满触发一次。 场景:实时搜索,拖拽。 实现: //每一次都要清空定时器,重新设置上计时器值,使得计时器每一次都重新开始,直到最后满足条件并且...
2018-04-13 10:55:37 3486
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人