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 相关文章推荐
模仿jQuery each函数的链式调用
Jul 22 Javascript
innerHTML与jquery里的html()区别介绍
Oct 12 Javascript
解读JavaScript中 For, While与递归的用法
May 07 Javascript
Jquery封装tab自动切换效果的具体实现
Jul 13 Javascript
JS的框架Polymer中的dom-if和is属性使用说明
Jul 29 Javascript
js实现可输入可选择的select下拉框
Dec 21 Javascript
vue2.0获取自定义属性的值
Mar 28 Javascript
Vue.js移动端左滑删除组件的实现代码
Sep 08 Javascript
vue实现页面加载动画效果
Sep 19 Javascript
vue项目中运用webpack动态配置打包多种环境域名的方法
Jun 24 Javascript
js绘制一条直线并旋转45度
Aug 21 Javascript
Vue中添加滚动事件设置的方法详解
Sep 14 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加速的eAccelerator dll支持文件打包下载
2007/09/30 PHP
php字符比较函数similar_text、strnatcmp与strcasecmp用法分析
2014/11/18 PHP
PHP使用CURL模拟登录的方法
2015/07/08 PHP
PHP实现路由映射到指定控制器
2016/08/13 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
脚本吧 - 幻宇工作室用到js,超强推荐base.js
2006/12/23 Javascript
JQuery下的Live方法和$.browser方法使用代码
2010/06/02 Javascript
关于jQuery中.attr()和.prop()的问题探讨
2013/09/06 Javascript
跟我学习javascript的prototype原型和原型链
2015/11/18 Javascript
javascript下使用Promise封装FileReader
2016/02/19 Javascript
基于jQuery实现带动画效果超炫酷的弹出对话框(附源码下载)
2016/02/22 Javascript
JavaScript中的闭包
2016/02/24 Javascript
学习使用bootstrap的modal和carousel
2016/12/09 Javascript
nodejs 实现钉钉ISV接入的加密解密方法
2017/01/16 NodeJs
react-redux中connect()方法详细解析
2017/05/27 Javascript
vue.js根据代码运行环境选择baseurl的方法
2018/02/28 Javascript
JS获取浏览器地址栏的多个参数值的任意值实例代码
2018/07/24 Javascript
three.js搭建室内场景教程
2018/12/30 Javascript
vue全局自定义指令-元素拖拽的实现代码
2019/04/14 Javascript
js实现贪吃蛇小游戏(加墙)
2020/07/31 Javascript
Python查询IP地址归属完整代码
2017/06/21 Python
对python多线程SSH登录并发脚本详解
2019/02/14 Python
python实现诗歌游戏(类继承)
2019/02/26 Python
用Python做一个久坐提醒小助手的示例代码
2020/02/10 Python
Python3使用Selenium获取session和token方法详解
2021/02/16 Python
如何实现一个自定义类的序列化
2012/05/22 面试题
办理居住证介绍信
2014/01/15 职场文书
测量工程专业求职信
2014/02/24 职场文书
座谈会主持词
2014/03/20 职场文书
学校搬迁方案
2014/06/15 职场文书
十佳好少年事迹材料
2014/08/21 职场文书
技术股东合作协议书
2014/12/02 职场文书
商场广播稿范文
2015/08/19 职场文书
2019通用版新员工入职培训方案!
2019/07/11 职场文书
日本动漫十大公认神作:第五现已全网禁播,《死亡笔记》在榜
2022/03/18 日漫
使用Python通过企业微信应用给企业成员发消息
2022/04/18 Python