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 相关文章推荐
js中判断数字\字母\中文的正则表达式 (实例)
Jun 29 Javascript
jQuery仿Excel表格编辑功能的实现代码
May 01 Javascript
你所不了解的javascript操作DOM的细节知识点(一)
Jun 17 Javascript
jQuery Select下拉框操作小结(推荐)
Jul 22 Javascript
AngularJS中过滤器的使用与自定义实例代码
Sep 17 Javascript
浅谈AngularJS中ng-class的使用方法
Nov 11 Javascript
js处理包含中文的字符串实例
Oct 11 Javascript
VUE在for循环里面根据内容值动态的加入class值的方法
Aug 12 Javascript
jQuery实现简单的Ajax调用功能示例
Feb 15 jQuery
通过实例学习React中事件节流防抖
Jun 17 Javascript
JavaScript forEach中return失效问题解决方案
Jun 01 Javascript
js数组的基本使用总结
Jan 18 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
晶体管来复再生式二管收音机
2021/03/02 无线电
解析PHP SPL标准库的用法(遍历目录,查找固定条件的文件)
2013/06/18 PHP
php常用Output和ptions/Info函数集介绍
2013/06/19 PHP
jQuery 事件队列调整方法
2009/09/18 Javascript
jquery全选/全不选/反选另一种实现方法(配合原生js)
2013/04/07 Javascript
js+css实现的简单易用兼容好的分页
2013/12/30 Javascript
JS中的构造函数详细解析
2014/03/10 Javascript
Angular2 环境配置详细介绍
2016/09/21 Javascript
jquery对象与DOM对象转化
2017/02/08 Javascript
vue.js如何将echarts封装为组件一键使用详解
2017/10/10 Javascript
webpack-dev-server远程访问配置方法
2018/02/22 Javascript
简单谈谈offsetleft、offsetTop和offsetParent
2020/12/04 Javascript
rhythmbox中文名乱码问题解决方法
2008/09/06 Python
java直接调用python脚本的例子
2014/02/16 Python
Python的语言类型(详解)
2017/06/24 Python
Python代码块批量添加Tab缩进的方法
2018/06/25 Python
python中的变量如何开辟内存
2018/06/26 Python
python3调用百度翻译API实现实时翻译
2018/08/16 Python
python多进程使用及线程池的使用方法代码详解
2018/10/24 Python
Python 3.8新特征之asyncio REPL
2019/05/28 Python
Python使用Pandas库实现MySQL数据库的读写
2019/07/06 Python
python3中替换python2中cmp函数的实现
2019/08/20 Python
selenium 多窗口切换的实现(windows)
2020/01/18 Python
Python的赋值、深拷贝与浅拷贝的区别详解
2020/02/12 Python
详解修改Anaconda中的Jupyter Notebook默认工作路径的三种方式
2021/01/24 Python
python网络爬虫实现发送短信验证码的方法
2021/02/25 Python
CSS3实现10种Loading效果
2016/07/11 HTML / CSS
Sneaker Studio罗马尼亚网站:购买运动鞋
2018/11/04 全球购物
瑞典度假品牌:OAS
2019/05/28 全球购物
幼儿教师工作感言
2014/02/14 职场文书
银行开户授权委托书格式
2014/10/10 职场文书
简历中自我评价范文
2015/03/11 职场文书
推销搭讪开场白
2015/05/28 职场文书
2015年计算机教学工作总结
2015/07/22 职场文书
小学体育跳绳课教学反思
2016/02/16 职场文书
Win11 S Mode版本泄露 正式上线后叫做Windows 11 SE
2021/11/21 数码科技