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 相关文章推荐
XHTML下,JS浮动代码失效的问题
Nov 12 Javascript
JQuery 插件模板 制作jquery插件的朋友可以参考下
Mar 17 Javascript
AJAX分页的代码(后台asp.net)
Feb 14 Javascript
基于jquery循环map功能的代码
Feb 26 Javascript
chrome原生方法之数组
Nov 30 Javascript
js为鼠标添加右击事件防止默认的右击菜单弹出
Jul 29 Javascript
使用js判断数组中是否包含某一元素(类似于php中的in_array())
Dec 12 Javascript
基于javascript的COOkie的操作实现只能点一次
Dec 26 Javascript
js实现的简单radio背景颜色选择器代码
Aug 18 Javascript
JavaScript实现数据类型的相互转换
Mar 06 Javascript
JavaScript实现全选取消效果
Dec 14 Javascript
深入理解与使用keep-alive(配合router-view缓存整个路由页面)
Sep 25 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 4.2书写安全的脚本
2006/10/09 PHP
PHP如何得到当前页和上一页的地址?
2006/11/27 PHP
ecshop 批量上传(加入自定义属性)
2012/03/20 PHP
ThinkPHP实现事务回滚示例代码
2014/06/23 PHP
PHP手机短信验证码实现流程详解
2018/05/17 PHP
PHP序列化的四种实现方法与横向对比
2018/11/29 PHP
使用vs code编辑调试php配置的方法
2019/01/29 PHP
PHP容器类的两种实现方式示例
2019/07/24 PHP
XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)
2011/01/12 Javascript
node.js中的path.resolve方法使用说明
2014/12/08 Javascript
基于javascript的COOkie的操作实现只能点一次
2014/12/26 Javascript
Javascript中的数组常用方法解析
2016/06/17 Javascript
解决jQuery ajax请求在IE6中莫名中断的问题
2016/06/20 Javascript
JS弹性运动实现方法分析
2016/12/15 Javascript
基于Vue实现拖拽功能
2020/07/29 Javascript
详解vue.js下引入百度地图jsApi的两种方法
2018/07/27 Javascript
微信小程序云开发如何使用云函数生成二维码
2019/05/18 Javascript
微信小程序加载机制及运行机制图解
2019/11/27 Javascript
Python 命令行非阻塞输入的小例子
2013/09/27 Python
Python下载网络小说实例代码
2018/02/03 Python
简单分析python的类变量、实例变量
2019/08/23 Python
pytorch dataloader 取batch_size时候出现bug的解决方式
2020/02/20 Python
opencv 图像滤波(均值,方框,高斯,中值)
2020/07/08 Python
英国儿童家具专卖店:GLTC
2016/09/24 全球购物
英国信箱在线鲜花速递公司:Bloom & Wild
2019/03/10 全球购物
澳大利亚领先的在线药房:Pharmacy Online(有中文站)
2020/02/22 全球购物
JS原生实现轮播图的几种方法
2021/03/23 Javascript
大学生简短的自我评价分享
2014/02/20 职场文书
财务科科长岗位职责
2014/03/10 职场文书
法律进机关实施方案
2014/03/12 职场文书
大学生社会实践自我鉴定
2014/03/24 职场文书
申论倡议书范文
2014/05/13 职场文书
法定代表人授权委托书格式
2014/10/14 职场文书
长城导游词
2015/01/30 职场文书
SpringBoot2零基础到精通之数据与页面响应
2022/03/22 Java/Android
js判断两个数组相等的5种方法
2022/05/06 Javascript