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有关的小细节
Apr 02 Javascript
html数组字符串拼接的最快方法
Sep 16 Javascript
javascript 获取url参数和script标签中获取url参数函数代码
Jan 22 Javascript
jQuery的Ajax的自动完成功能控件简要说明
Feb 22 Javascript
jQuery setTimeout()函数使用方法
Apr 07 Javascript
JavaScript面向对象的实现方法小结
Apr 14 Javascript
Javascript DOM事件操作小结(监听鼠标点击、释放,悬停、离开等)
Jan 20 Javascript
Angular4 中内置指令的基本用法
Jul 31 Javascript
Angularjs 1.3 中的$parse实例代码
Sep 14 Javascript
详解javascript replace高级用法
Feb 17 Javascript
js实现点击选项置顶动画效果
Aug 25 Javascript
原生微信小程序开发中 redux 的使用详解
Feb 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
PHP安装问题
2006/10/09 PHP
php 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
2008/11/14 PHP
如何批量清理系统临时文件(语言:C#、 C/C++、 php 、python 、java )
2016/02/01 PHP
php 魔术常量详解及实例代码
2016/12/04 PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
2019/06/25 PHP
js获取单选按钮的数据
2006/11/27 Javascript
分享别人写的一个小型js框架
2007/08/13 Javascript
JS应用之禁止抓屏、复制、打印
2008/02/21 Javascript
基于Jquery的将DropDownlist的选中值赋给label的实现代码
2011/05/06 Javascript
TextArea不支持maxlength的解决办法(jquery)
2011/09/13 Javascript
jquery插件制作简单示例说明
2012/02/03 Javascript
关于JavaScript的面向对象和继承有利新手学习
2013/01/11 Javascript
jQuery操作cookie方法实例教程
2014/11/25 Javascript
node.js中的console.log方法使用说明
2014/12/09 Javascript
jQuery增加自定义函数的方法
2015/07/18 Javascript
JS+CSS实现的竖向简洁折叠菜单效果代码
2015/10/22 Javascript
JS实现点击按钮获取页面高度的方法
2015/11/02 Javascript
JavaScript禁止用户多次提交的两种方法
2016/07/24 Javascript
深入探讨Vue.js组件和组件通信
2016/09/12 Javascript
基于iscroll.js实现下拉刷新和上拉加载效果
2016/11/28 Javascript
利用select实现年月日三级联动的日期选择效果【推荐】
2016/12/13 Javascript
浅谈vue中数据双向绑定的实现原理
2017/09/14 Javascript
对Layer UI 模块化的用法详解
2019/09/26 Javascript
Django与遗留的数据库整合的方法指南
2015/07/24 Python
Python3中的真除和Floor除法用法分析
2016/03/16 Python
python实现梯度下降法
2020/03/24 Python
python 实现波浪滤镜特效
2020/12/02 Python
html5画布旋转效果示例
2014/01/27 HTML / CSS
eDreams澳大利亚:预订机票、酒店和度假产品
2017/04/19 全球购物
什么是WEB控件?使用WEB控件有哪些优势?
2012/01/21 面试题
餐厅服务员岗位职责
2015/02/09 职场文书
5.12护士节活动总结
2015/02/10 职场文书
三潭印月的导游词
2015/02/12 职场文书
公司晚宴祝酒词
2015/08/11 职场文书
nginx配置proxy_pass中url末尾带/与不带/的区别详解
2021/03/31 Servers
你需要掌握的20个Python常用技巧
2022/02/28 Python