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之可拖动的iframe效果代码
Aug 01 Javascript
JavaScript 高级语法介绍
Jun 15 Javascript
jquery中获取元素的几种方式小结
Jul 05 Javascript
jQuery中获取Radio元素值的方法
Jul 02 Javascript
jquery 追加tr和删除tr示例代码
Sep 12 Javascript
JQGrid的用法解析(列编辑,添加行,删除行)
Nov 08 Javascript
详解AngularJS中的依赖注入机制
Jun 17 Javascript
jquery捕捉回车键及获取checkbox值与异步请求的方法
Dec 24 Javascript
jQuery的 $.ajax防止重复提交的两种方法(推荐)
Oct 14 Javascript
js图片轮播手动切换特效
Jan 12 Javascript
jQuery实现的简单在线计算器功能
May 11 jQuery
vue框架搭建之axios使用教程
Jul 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
用缓存实现静态页面的测试
2006/12/06 PHP
PHP 时间转换Unix时间戳代码
2010/01/22 PHP
php简单提示框alert封装函数
2010/08/08 PHP
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
2012/04/09 PHP
PHP水印类,支持添加图片、文字、填充颜色区域的实现
2017/02/04 PHP
javascript new 需不需要继续使用
2009/07/02 Javascript
遍历jquery对象的代码分享
2011/11/02 Javascript
JQUERY 设置SELECT选中项代码
2014/02/07 Javascript
jquery实现导航固定顶部的效果仿蘑菇街
2014/10/22 Javascript
js实现DOM走马灯特效的方法
2015/01/21 Javascript
JavaScript使用setTimeout实现延迟弹出警告框的方法
2015/04/07 Javascript
原生javascript上传图片带进度条【实例分享】
2017/04/06 Javascript
Vue2递归组件实现树形菜单
2017/04/10 Javascript
利用canvas实现的加载动画效果实例代码
2017/07/05 Javascript
通过js控制时间,一秒一秒自己动的实例
2017/10/25 Javascript
Vue项目全局配置页面缓存之按需读取缓存的实现详解
2018/08/01 Javascript
layui table设置前台过滤转义等方法
2018/08/17 Javascript
nodeJS进程管理器pm2的使用
2019/01/09 NodeJs
详解webpack 最简打包结果分析
2019/02/20 Javascript
JS寄快递地址智能解析的实现代码
2020/07/16 Javascript
Python中线程编程之threading模块的使用详解
2015/06/23 Python
详解Python3操作Mongodb简明易懂教程
2017/05/25 Python
Python使用matplotlib绘制多个图形单独显示的方法示例
2018/03/14 Python
Python批量发送post请求的实现代码
2018/05/05 Python
Django添加sitemap的方法示例
2018/08/06 Python
python的一些加密方法及python 加密模块
2019/07/11 Python
关于Python中定制类的比较运算实例
2019/12/19 Python
用python进行视频剪辑
2020/11/02 Python
css3的@media属性实现页面响应式布局示例代码
2014/02/10 HTML / CSS
税务会计岗位职责
2014/02/18 职场文书
销售顾问工作计划书
2014/09/15 职场文书
六查六看自查报告
2014/10/14 职场文书
优秀教师事迹材料
2014/12/15 职场文书
堂吉诃德读书笔记
2015/06/30 职场文书
2016年秋季运动会广播稿
2015/12/21 职场文书
MySQL高级进阶sql语句总结大全
2022/03/16 MySQL