首页 编程 软件学院 查看内容

JavaScript语言的三种编程范式比较

2017-6-3 09:30 |来自: 互联网 2641 0

摘要: 和C++语言一样,JavaScript语言也支持多范式编程。我们常常混合使用这些范式来完成一些大型的Web项目的开发。JavaScript支持的编程范式有:命令式函数式面向对象命令式(Imperative JavaScript)命令式可以理解成面 ...

和C++语言一样,JavaScript语言也支持多范式编程。我们常常混合使用这些范式来完成一些大型的Web项目的开发。JavaScript支持的编程范式有:

  • 命令式

  • 函数式

  • 面向对象

命令式(Imperative JavaScript)

命令式可以理解成面向过程,是简单的从上至下完成任务,流水账式的编程风格。如下图所示代码:

这样编写代码比较简单,但存在一些明显的问题,比喻可能存在函数名描述性差、命名冲突、变量冗余、复用性差等。

函数式(Functional JavaScript)

示例代码如下:

可以看到,通过数组对象的内置原型方法map和reduce,大大简化了代码,并且如果熟悉了这种风格,其代码的自描述性也很棒。

map和reduce都是高阶函数(能接受函数作为参数,也能返回函数对象)。map函数用来把一组数据依次变换成另外一组数据,而reduce用来汇总数据,下图是对这两个关键函数有趣而直白的描述:

面向对象(Object-Oriented JavaScript)

面向对象的核心思想是把任务抽象成一个(或一组)对象的数据和操作,在C++语言中,这些抽象出来的对象可以便于接口或实现的复用(继承)以及访问控制,在JS中由于没有接口的概念,只能是函数实现的复用。

示例代码如下:

上面的代码创建了一个Task对象,包含公开属性nums,并通过原型定义了2个方法:square和sum,可以在多个对象之间共享,这样将节约内存。另外代码被包含在一个IIAF(immediately-invoked function expression)中,而不再是全局的。除了更符合OO的思维方式外,似乎代码并没有变得更为简洁。

小结

命令式编程是最基础的方式,面向对象的方式适合对现实世界进行抽象封装以及实现访问控制,函数式能最大程度的精简代码且适用于并行计算,而纯净函数(pure function)具有很好的移植性。

本文出处: http://www.toutiao.com/a6427035022632861953/
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部