JavaScript函数式编程(Functional Programming)高阶函数(Higher order functions)用法分析
本文实例讲述了JavaScript函数式编程(FunctionalProgramming)高阶函数(Higherorderfunctions)用法。分享给大家供大家参考,具体如下:
高阶函数(higher-orderfunctions),就是返回其它函数的函数,或者使用其它函数作为它的参数的函数。
使用函数作为参数
因为函数本身就是一个值,所以可以让函数作为参数传递给其它的函数。JavaScript有些函数就需要用到函数类型的参数,比如Array.map。
比如我有一组数据:
constnames=['小猫','小狗','小刺猬']
我要分别问候一下这组数据里的每个项目:
constgreetings=names.map(function(name){ return`hi~${name}` }) console.log(greetings) //["hi~小猫","hi~小狗","hi~小刺猬"]
上面的map方法里用了一个匿名函数作为它的参数。在这个函数里面,我们在数组里的每个项目的前面都加上了一个“hi~”,map会返回一个新的数组,这个数组我交给了greetings变量。
用箭头函数会更简洁一些:
constgreetings=names.map(name=>`hi~${name}`)
高阶函数
高阶函数(higher-orderfunctions)。在JavaScript里面,函数跟普通的对象没啥大区别,所以你可以让函数作为参数传递到其它的函数里面,你也可以在函数里返回函数。使用函数作为参数的函数,或者返回函数的函数,这些函数被称为高阶函数(higher-orderfunctions)。
比如刚才我们用的map就是一个高阶函数,因为它会用到一个函数作为它的参数。
再看一个例子:
constrobot=(name,action)=>{ returnaction(name) } constgreet=(name)=>{ return`hello,${name}` } constgreeting=robot('您好',greet) //返回“hello,您好”
robot是个函数,它支持两个参数,name与action,这里的action参数的类型是一个函数。在robot里面返回了action,并且把name参数的值交给了action。接下面我们又定义了一个函数叫greet,它接受一个参数是name,这个函数会返回一个字符串。
然后我们用了一下robot这个函数,设置了一下它的两个参数的值,name参数的值是'您好‘,action参数的值是我们定义的greet这个函数。执行的结果就会是:
hello,您好
我们可以再去定义一下函数:
constgoodbye=(name)=>{ return`bye,${name}` }
然后再用一下robot函数:
constbyeBye=robot('您好',goodbye)
这次会返回:
bye,您好
完整的例子:
constrobot=(name,action)=>{ returnaction(name) } constgreet=(name)=>{ return`hello,${name}` } constgreeting=robot('您好',greet) console.log(greeting) constgoodbye=(name)=>{ return`bye,${name}` } constbyeBye=robot('您好',goodbye) console.log(byeBye)
更多关于JavaScript相关内容可查看本站专题:《JavaScript常用函数技巧汇总》、《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。