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 强制类型转换函数
May 17 Javascript
jQuery AJAX 调用WebService实现代码
Mar 24 Javascript
cnblogs TagCloud基于jquery的实现代码
Jun 11 Javascript
Prototype源码浅析 String部分(四)之补充
Jan 16 Javascript
Node.js 服务器端应用开发框架 -- Hapi.js
Jul 29 Javascript
jQuery插件Zclip实现完美兼容个浏览器点击复制内容到剪贴板
Apr 30 Javascript
Vue.js实战之使用Vuex + axios发送请求详解
Apr 04 Javascript
Vue.js实现网格列表布局转换方法
Aug 25 Javascript
vue实现图书管理demo详解
Oct 17 Javascript
百度地图去掉marker覆盖物或者去掉maker的label文字方法
Jan 26 Javascript
JS隐藏号码中间4位代码实例
Apr 09 Javascript
vue.js 子组件无法获取父组件store值的解决方式
Nov 08 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 REMOTE_ADDR之获取访客IP的代码
2008/04/22 PHP
php 模拟 asp.net webFrom 按钮提交事件实例
2014/10/13 PHP
20个2014年最优秀的PHP框架回顾
2014/10/22 PHP
thinkphp框架page类与bootstrap分页(美化)
2017/06/25 PHP
在JavaScript中,为什么要尽可能使用局部变量?
2009/04/06 Javascript
基于jQuery的js分页代码
2010/06/10 Javascript
js 事件处理函数间的Event物件是否全等
2011/04/08 Javascript
Jquery异步请求数据实例代码
2011/12/28 Javascript
深入理解javascript中defer的作用
2013/12/11 Javascript
jQuery设置和获取HTML、文本和值示例
2014/07/08 Javascript
jQuery实现立体式数字动态增加(animate方法)
2016/12/21 Javascript
bootstrap警告框使用方法解析
2017/01/13 Javascript
AngularJs中 ng-repeat指令中实现含有自定义指令的动态html的方法
2017/01/19 Javascript
微信小程序教程系列之视图层的条件渲染(10)
2017/04/19 Javascript
react 实现页面代码分割、按需加载的方法
2018/04/03 Javascript
解决linux下node.js全局模块找不到的问题
2018/05/15 Javascript
微信小程序公用参数与公用方法用法示例
2019/01/09 Javascript
js实现多张图片每隔一秒切换一张图片
2019/07/29 Javascript
Javascript查看大图功能代码实现
2020/05/07 Javascript
vue实现tab栏点击高亮效果
2020/08/19 Javascript
Python-基础-入门 简介
2014/08/09 Python
Python字符串拼接、截取及替换方法总结分析
2016/04/13 Python
python如何在终端里面显示一张图片
2016/08/17 Python
Python语言描述KNN算法与Kd树
2017/12/13 Python
python range()函数取反序遍历sequence的方法
2018/06/25 Python
win7 x64系统中安装Scrapy的方法
2018/11/18 Python
Python秒算24点实现及原理详解
2019/07/29 Python
雅萌 (YA-MAN) :日本美容家电领域的龙头企业
2017/05/12 全球购物
美国时尚大码女装购物网站:Avenue
2019/05/24 全球购物
电气工程及其自动化学生实习自我鉴定
2013/09/19 职场文书
总结表彰大会主持词
2014/03/26 职场文书
食品安全责任书
2014/04/15 职场文书
民族学专业职业生涯规划范文:积跬步以至千里
2014/09/11 职场文书
庆元旦演讲稿
2014/09/15 职场文书
创业计划书之家教托管
2019/09/25 职场文书
2019年关于小学生课外阅读情况的分析报告
2019/12/02 职场文书