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 相关文章推荐
Web开发之JavaScript
Mar 29 Javascript
js中eval详解
Mar 30 Javascript
Function.prototype.call.apply结合用法分析示例
Jul 03 Javascript
非常漂亮的JS+CSS图片幻灯切换特效
Nov 20 Javascript
jQuery图片轮播滚动切换代码分享
Apr 20 Javascript
JS实现的简洁纵向滑动菜单(滑动门)效果
Oct 19 Javascript
javascript每日必学之继承
Feb 23 Javascript
JavaScript SHA512加密算法详细代码
Oct 06 Javascript
vue.js指令v-model使用方法
Mar 20 Javascript
详解VueJs前后端分离跨域问题
May 24 Javascript
javascript实现图片轮播代码
Jul 09 Javascript
vue使用vant中的checkbox实现全选功能
Nov 17 Vue.js
实现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生成文件
2007/01/15 PHP
php 数组二分法查找函数代码
2010/02/16 PHP
PHP 数组和字符串互相转换实现方法
2013/03/26 PHP
教你如何用php实现LOL数据远程获取
2014/06/10 PHP
WebQQ最新登陆协议的用法
2014/12/22 PHP
php封装的mysqli类完整实例
2016/10/18 PHP
PHP 根据key 给二维数组分组
2016/12/09 PHP
javascript解决innerText浏览器兼容问题思路代码
2013/05/17 Javascript
将form表单中的元素转换成对象的方法适用表单提交
2014/05/02 Javascript
javascript实例分享---具有立体效果的图片特效
2014/06/08 Javascript
JS对象与json字符串格式转换实例
2014/10/28 Javascript
根据配置文件加载js依赖模块
2014/12/29 Javascript
javascript实现很浪漫的气泡冒出特效
2020/09/05 Javascript
基于javascript制作经典传统的拼图游戏
2016/03/22 Javascript
Jquery修改image的src属性,图片不加载问题的解决方法
2016/05/17 Javascript
高效Web开发的10个jQuery代码片段
2016/07/22 Javascript
基于JavaScript实现屏幕滚动效果
2017/01/18 Javascript
AngularJS封装$http.post()实例详解
2017/05/06 Javascript
vue中关闭eslint的方法分析
2018/08/04 Javascript
jQuery实现图片简单轮播功能示例
2018/08/13 jQuery
vue-router源码之history类的浅析
2019/05/21 Javascript
Python list操作用法总结
2015/11/10 Python
浅谈python中的实例方法、类方法和静态方法
2017/02/17 Python
python处理Excel xlrd的简单使用
2017/09/12 Python
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
2018/04/18 Python
python中join()方法介绍
2018/10/11 Python
详解在python操作数据库中游标的使用方法
2019/11/12 Python
matplotlib实现显示伪彩色图像及色度条
2019/12/07 Python
Python基于traceback模块获取异常信息
2020/07/23 Python
班级出游活动计划书
2014/08/15 职场文书
爬山的活动方案
2014/08/16 职场文书
给老婆的保证书
2015/01/16 职场文书
2015年商场工作总结
2015/04/27 职场文书
七年级作文之游记
2019/12/11 职场文书
SQL SERVER实现连接与合并查询
2022/02/24 SQL Server
详解Anyscript开发指南绕过typescript类型检查
2022/09/23 Javascript