JavaScript 函数式编程的原理


Posted in Javascript onOctober 16, 2009

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

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 "匿名函数(的执行结果)作为参数"})());

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

Javascript 相关文章推荐
javascript 密码强弱度检测万能插件
Feb 25 Javascript
js实现图片放大缩小功能后进行复杂排序的方法
Nov 08 Javascript
父元素与子iframe相互获取变量和元素对象的具体实现
Oct 15 Javascript
jquery easyui combox一些实用的小方法
Dec 25 Javascript
js点击出现悬浮窗效果不使用JQuery插件
Jan 20 Javascript
JavaScript日期时间与时间戳的转换函数分享
Jan 31 Javascript
JS实现根据文件字节数返回文件大小的方法
Aug 02 Javascript
javascript中活灵活现的Array对象详解
Nov 30 Javascript
js异步编程小技巧详解
Aug 14 Javascript
在create-react-app中使用css modules的示例代码
Jul 31 Javascript
vue-cli中使用高德地图的方法示例
Mar 28 Javascript
JS中间件设计模式的深入探讨与实例分析
Apr 11 Javascript
实现JavaScript中继承的三种方式
Oct 16 #Javascript
显示js对象所有属性和方法的函数
Oct 16 #Javascript
半角全角相互转换的js函数
Oct 16 #Javascript
JavaScript 三种创建对象的方法
Oct 16 #Javascript
JQuery困惑—包装集 DOM节点
Oct 16 #Javascript
JavaScript 对象成员的可见性说明
Oct 16 #Javascript
Javascript 圆角div的实现代码
Oct 15 #Javascript
You might like
php str_pad 函数使用详解
2009/01/13 PHP
PHP中的cookie不用刷新就生效的方法
2012/02/04 PHP
解析在PHP中使用mysqli扩展库对mysql的操作
2013/07/03 PHP
如何离线执行php任务
2017/02/21 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
jQuery 自定义函数写法分享
2012/03/30 Javascript
jquery ajax提交整个表单元素的快捷办法
2013/03/27 Javascript
javascript常用经典算法实例详解
2015/11/25 Javascript
js仿淘宝和百度文库的评分功能
2016/05/15 Javascript
bootstrap模态框实现拖拽效果
2016/12/14 Javascript
Vue父组件调用子组件事件方法
2018/02/23 Javascript
angularjs1.5 组件内用函数向外传值的实例
2018/09/30 Javascript
vue实现双向绑定和依赖收集遇到的坑
2018/11/29 Javascript
使用python提取html文件中的特定数据的实现代码
2013/03/24 Python
python实现获取客户机上指定文件并传输到服务器的方法
2015/03/16 Python
使用Python制作获取网站目录的图形化程序
2015/05/04 Python
python实现基本进制转换的方法
2015/07/11 Python
Flask数据库迁移简单介绍
2017/10/24 Python
机器学习python实战之决策树
2017/11/01 Python
Python告诉你木马程序的键盘记录原理
2019/02/02 Python
基于wxPython的GUI实现输入对话框(1)
2019/02/27 Python
python3文件复制、延迟文件复制任务的实现方法
2019/09/02 Python
Python的条件锁与事件共享详解
2019/09/12 Python
Python爬取网页信息的示例
2020/09/24 Python
Canvas 文本转粒子效果的实现代码
2019/02/14 HTML / CSS
在HTML5 Canvas中放入图片和保存为图片的方法
2014/05/03 HTML / CSS
英国女性时尚精品店:THE DRESSING ROOM
2018/05/23 全球购物
Airbnb爱彼迎官网:成为爱彼迎房东,赚取收入
2019/03/14 全球购物
英国婴儿产品专家:Samuel Johnston
2020/04/20 全球购物
2013年大学生的自我鉴定
2013/10/24 职场文书
建议书怎么写
2014/03/12 职场文书
《最大的麦穗》教学反思
2014/04/17 职场文书
船舶工程技术专业求职信
2014/08/07 职场文书
学校师德师风自我剖析材料
2014/09/29 职场文书
技术员岗位职责范本
2015/04/11 职场文书
门面租赁合同范文
2019/08/06 职场文书