要了解JavaScript中的函数式编程原理,必须理解一下两个知识点:

1,JavaScript中函数、方法的调用

在JavaScript中,有两种调用函数的方式。一般的方式是把参数放在括号中,另一种方式是同时把函数和参数都放在括号中。如:

Code
function test(x)
{
      alert(x);
}

test("hello");
(test)("hello");

//等同于下面的代码
(function test(x)
{
      alert(x);
})("hello");

//也等同于下面的代码
(function (x)
{
      alert(x);
})("hello");

2,匿名函数

  匿名函数即没有名字的函数或方法。匿名函数可以认为是一次性函数。当你只需要用一次某个函数时,它们就特别有用。通过使用匿名函数,由于没有相关的引用及标识,执行后就会被垃圾回收,所以使用匿名函数更有效率。下面简单地比较一下匿名函数与其他有引用或标识函数:

function test(x)
{
      alert("定义一个标识函数");
}

var test = function()
{
      alert("将一个匿名函数指向一个引用");
}

(function()
{
      alert("我是一个匿名函数");
})();//这里其实已经定义并执行了一个匿名函数

  大多数语言都支持将函数作为运算元(参数)参与运算。不过由于对函数的定位不同,因此它们的运算结果也不意一样。当JavaScript中的函数作为参数时,是通过引用传递的。“函数参数”与普通参数并没有什么不同,其结果都返回唯一的值。

function test(func)
{
      alert(func);
}

test((function(){return "匿名函数(的执行结果)作为参数"})());

  函数式编程的每个变量都是临时残生的。或者可以这么认为:在函数式中没有变量这个概念,任何数据都是根据实际需要,按一定的规则(函数)计算后得到的,这也从一定程度上解决了原子变量并发访问的问题。

转载于:https://www.cnblogs.com/gisland/archive/2009/10/16/1584716.html

JavaScript中函数式编程的原理相关推荐

  1. JavaScript 的函数式编程与面向对象编程区别在哪?

    本文通过代码来看一看JavaScript中函数式编程和面向对象编程的差异. 作者 | Jesse Warden 译者 | 弯月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文 ...

  2. JavaScript的函数式编程,你了解吗?

    探索函数式编程,通过它让你的程序更具有可读性和易于调试 当 Brendan Eich 在 1995 年创造 JavaScript 时,他原本打算将 Scheme 移植到浏览器里 .Scheme 作为 ...

  3. 翻译连载 | JavaScript轻量级函数式编程-第4章:组合函数 |《你不知道的JS》姊妹篇...

    原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...

  4. 翻译连载 | 第 10 章:异步的函数式(下)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇...

    为什么80%的码农都做不了架构师?>>>    原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS> ...

  5. 翻译连载 | JavaScript轻量级函数式编程-第7章: 闭包vs对象 |《你不知道的JS》姊妹篇...

    原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...

  6. 翻译连载 | 附录 A:Transducing(下)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇...

    原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...

  7. 翻译连载 | 第 11 章:融会贯通 -《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇...

    原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...

  8. 翻译连载 | JavaScript轻量级函数式编程-第 8 章:列表操作 |《你不知道的JS》姊妹篇

    原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...

  9. 翻译连载 | JavaScript轻量级函数式编程-第 8 章:列表操作 |《你不知道的JS》姊妹篇...

    原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...

最新文章

  1. APP Widget的开发
  2. c#获取DataTable某一列不重复的值,或者获取某一列的所有值
  3. 【AI白身境】学深度学习你不得不知的爬虫基础​​​​​​​
  4. LeetCode 293. Flip Game
  5. 工作流实战_02_flowable 流程模板导入
  6. C语言-数据结构-单链表的初始化,插入和输出
  7. POJ 3274 Gold Balanced Lineup
  8. python编写agent_python实现Agent守护进程
  9. REST架构风格的理解(分布式应用系统的架构演变)
  10. 吐血推荐几款优秀下载软件
  11. 笔记本如何正确安装对应显卡驱动
  12. 皮尔逊相关系数_皮尔逊相关系数(Person)
  13. [电机控制话题] 精辟!伺服电机、舵机、步进电机的区别
  14. 【LM】windows7 内部版本7601,此windows副本不是正版——已解决
  15. mysql1026_PAT Basic 1026(示例代码)
  16. windows2016服务器优化,Windows server 2016性能调优问题
  17. 中国多媒体与网络教学学报杂志中国多媒体与网络教学学报杂志社中国多媒体与网络教学学报编辑部2022年第6期目录
  18. 密码学入门(5):单向散列函数
  19. 生鲜配送系统源码功能介绍
  20. .NET平台机器学习资源汇总,有你想要的么?

热门文章

  1. 创建用户赋权限_JMeter接口测试实战之「创建用户」篇
  2. 说明 RISC 和 CISC 指令系统的区别?
  3. 使命召唤为啥显示新服务器玩家,《使命召唤8》建立服务器和加入自己、别人服务器方法...
  4. pytdx 获取板块指数_怎么查看各行业板块指数?
  5. 【数据库原理实验(openGauss)】创建数据库、表和索引
  6. Windows核心编程_远线程方式实现Dll注入
  7. Linux-LNMP(pool,php-fpm慢执行日志,进程管理,open_basedir)
  8. 实例化vue发生了什么?(详解vue生命周期)
  9. 【spring boot】5.spring boot 创建web项目并使用jsp作前台页面
  10. Handheld Group推出Algiz平板,内置RFID读取器