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 相关文章推荐
腾讯与新浪的通过IP地址获取当前地理位置(省份)的接口
Jul 26 Javascript
基于jquery的当鼠标滚轮到最底端继续加载新数据思路分享(多用于微博、空间、论坛 )
Oct 10 Javascript
javascript的offset、client、scroll使用方法详解
Dec 25 Javascript
JavaScript实现同一页面内两个表单互相传值的方法
Aug 12 Javascript
javascript日期格式化方法汇总
Oct 04 Javascript
详细谈谈AngularJS的子级作用域问题
Sep 05 Javascript
EasyUI为Numberbox添加blur事件的方法
Mar 05 Javascript
TypeScript中的方法重载详解
Apr 12 Javascript
解决layui 三级联动下拉框更新时回显的问题
Sep 03 Javascript
Nuxt.js 静态资源和打包的操作
Nov 06 Javascript
Taro小程序自定义顶部导航栏功能的实现
Dec 17 Javascript
Ajax请求超时与网络异常处理图文详解
May 23 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实现javascript的escape和unescape函数
2013/06/29 PHP
使用phpQuery采集网页的方法
2013/11/13 PHP
Yii框架在页面输出执行sql语句以方便调试的实现方法
2014/12/24 PHP
用YUI做了个标签浏览效果
2007/02/20 Javascript
Javascript 匿名函数及其代码模式原理
2010/03/19 Javascript
关于jQuery对象数据缓存Cache原理以及jQuery.data详解
2013/04/07 Javascript
Javascript中的apply()方法浅析
2015/03/15 Javascript
使用AOP改善javascript代码
2015/05/01 Javascript
浅谈JavaScript异常处理语句
2015/06/26 Javascript
angular.js+node.js实现下载图片处理详解
2017/03/31 Javascript
如何在基于vue-cli的项目自定义打包环境
2018/11/10 Javascript
jQuery中实现text()的方法
2019/04/04 jQuery
JS使用iView的Dropdown实现一个右键菜单
2019/05/06 Javascript
JavaScript Date对象功能与用法学习记录
2020/04/28 Javascript
Angular+Ionic使用queryParams实现跳转页传值的方法
2020/09/05 Javascript
[01:00:52]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第一场
2018/04/05 DOTA
python查找第k小元素代码分享
2013/12/18 Python
Python中的两个内置模块介绍
2015/04/05 Python
Centos Python2 升级到Python3的简单实现
2016/06/21 Python
Python3学习urllib的使用方法示例
2017/11/29 Python
python在TXT文件中按照某一字符串取出该字符串所在的行方法
2018/12/10 Python
Python3 使用cookiejar管理cookie的方法
2018/12/28 Python
python和mysql交互操作实例详解【基于pymysql库】
2019/06/04 Python
python机器学习库scikit-learn:SVR的基本应用
2019/06/26 Python
OpenCV+Python3.5 简易手势识别的实现
2020/12/21 Python
html5指南-5.使用web storage存储键值对的数据
2013/01/07 HTML / CSS
客户表扬信范文
2014/01/10 职场文书
关于期中考试的反思
2014/02/02 职场文书
毕业生个人求职自荐信
2014/02/26 职场文书
中文专业自荐书
2014/06/29 职场文书
2014年教师个人工作总结
2014/11/10 职场文书
不尊敬老师的检讨书
2014/12/21 职场文书
2015年双拥工作总结
2015/04/08 职场文书
2015年小学师德师风建设工作总结
2015/10/23 职场文书
python之django路由和视图案例教程
2021/07/26 Python
vue使用element-ui按需引入
2022/05/20 Vue.js