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 相关文章推荐
写入cookie的JavaScript代码库 cookieLibrary.js
Oct 24 Javascript
基于jQuery实现的当离开页面时出现提示的实现代码
Jun 27 Javascript
html+css+js实现xp window界面及有关功能
Mar 26 Javascript
js有序数组的连接问题
Oct 01 Javascript
js实现简单登录功能的实例代码
Nov 09 Javascript
页面装载js及性能分析方法介绍
Mar 21 Javascript
js判断一个字符串是否包含一个子串的方法
Jan 26 Javascript
javascript 常用验证函数总结
Jun 28 Javascript
JavaScript实现刷新不重记的倒计时
Aug 10 Javascript
vue.js入门教程之绑定class和style样式
Sep 02 Javascript
javascript中对象的定义、使用以及对象和原型链操作小结
Dec 14 Javascript
Vue2单一事件管理组件通信
May 09 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
把从SQL中取出的数据转化成XMl格式
2006/10/09 PHP
PHP递归获取目录内所有文件的实现方法
2016/11/01 PHP
php实现将数据做成json的格式给前端使用
2018/08/21 PHP
PHP执行普通shell命令流程解析
2020/08/24 PHP
JS类库Bindows1.3中的内存释放方式分析
2007/03/08 Javascript
Jquery为单选框checkbox绑定单击click事件
2012/12/18 Javascript
JS批量操作CSS属性详细解析
2013/12/16 Javascript
js生成随机数之random函数随机示例
2013/12/20 Javascript
js函数定时器实现定时读取系统实时连接数
2014/04/30 Javascript
jQuery中scrollTop()方法用法实例
2015/01/16 Javascript
jQuery替换textarea中换行的方法
2015/06/10 Javascript
jquery序列化方法实例分析
2015/06/10 Javascript
readonly和disabled属性的区别
2015/07/26 Javascript
利用JS实现数字增长
2016/07/28 Javascript
你知道setTimeout是如何运行的吗?
2016/08/16 Javascript
关于javascript的一些知识以及循环详解
2016/09/12 Javascript
JavaScript中双符号的运算详解
2017/03/12 Javascript
vue 设置proxyTable参数进行代理跨域
2018/04/09 Javascript
vue实现的网易云音乐在线播放和下载功能案例
2019/02/18 Javascript
Ant design vue中的联动选择取消操作
2020/10/31 Javascript
简单讲解Python中的字符串与字符串的输入输出
2016/03/13 Python
Python 类与元类的深度挖掘 II【经验】
2016/05/06 Python
Python列表list解析操作示例【整数操作、字符操作、矩阵操作】
2017/07/25 Python
python字典操作实例详解
2017/11/16 Python
利用python和ffmpeg 批量将其他图片转换为.yuv格式的方法
2019/01/08 Python
浅谈Python基础—判断和循环
2019/03/22 Python
TensorFlow梯度求解tf.gradients实例
2020/02/04 Python
Keras-多输入多输出实例(多任务)
2020/06/22 Python
Python如何发送与接收大型数组
2020/08/07 Python
Python字符串对齐、删除字符串不需要的内容以及格式化打印字符
2021/01/23 Python
HTML5 Canvas的性能提高技巧经验分享
2013/07/02 HTML / CSS
HTML5 Web缓存和运用程序缓存(cookie,session)
2018/01/11 HTML / CSS
2014年应届大学生毕业自我鉴定
2014/01/31 职场文书
如何写辞职书
2015/02/26 职场文书
博士导师推荐信
2015/03/25 职场文书
撤诉申请书法院范本
2015/05/18 职场文书