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 相关文章推荐
ExtJs grid行 右键菜单的两种方法
Jun 19 Javascript
改善用户体验的五款jQuery插件分享
May 22 Javascript
js 获取页面高度和宽度兼容 ie firefox chrome等
May 14 Javascript
jQuery使用andSelf()来包含之前的选择集
May 19 Javascript
JavaScript中用getDate()方法返回指定日期的教程
Jun 09 Javascript
详解如何将angular-ui的图片轮播组件封装成一个指令
May 09 Javascript
Vue render渲染时间戳转时间,时间转时间戳及渲染进度条效果
Jul 27 Javascript
JS实现纵向轮播图(初级版)
Jan 18 Javascript
如何在JavaScript中创建具有多个空格的字符串?
Feb 23 Javascript
vue项目在线上服务器访问失败原因分析
Aug 14 Javascript
js+css实现扇形导航效果
Aug 18 Javascript
Ant-design-vue Table组件customRow属性的使用说明
Oct 28 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中在数据库中保存Checkbox数据(2)
2006/10/09 PHP
php处理斐波那契数列非递归方法
2012/02/04 PHP
win7系统配置php+Apache+mysql环境的方法
2015/08/21 PHP
php session的应用详细介绍
2017/03/22 PHP
解决thinkphp5未定义变量会抛出异常,页面错误,请稍后再试的问题
2019/10/16 PHP
PHP7 标准库修改
2021/03/09 PHP
use jscript with List Proxy Server Information
2007/06/11 Javascript
JavaScript入门教程(3) js面向对象
2009/01/31 Javascript
使用jQuery的ajax功能实现的RSS Reader 代码
2009/09/03 Javascript
JS判定是否原生方法
2013/07/22 Javascript
js模拟hashtable的简单实例
2014/03/06 Javascript
使用jquery实现放大镜效果
2014/09/02 Javascript
jQuery对象的length属性用法实例
2014/12/27 Javascript
jQuery中append()方法用法实例
2015/01/08 Javascript
jquery图片轮播特效代码分享
2020/04/20 Javascript
微信小程序 数据封装,参数传值等经验分享
2017/01/09 Javascript
html+javascript+bootstrap实现层级多选框全层全选和多选功能
2017/03/09 Javascript
基于vue.js轮播组件vue-awesome-swiper实现轮播图
2017/03/17 Javascript
jQuery获取table下某一行某一列的值实现代码
2017/04/07 jQuery
JavaScript适配器模式详解
2017/10/19 Javascript
浅谈vue的几种绑定变量的值 防止其改变的方法
2018/03/01 Javascript
JS使用H5实现图片预览功能
2019/09/30 Javascript
Vue实现input宽度随文字长度自适应操作
2020/07/29 Javascript
深入了解Vue3模板编译原理
2020/11/19 Vue.js
JavaScript实现弹出窗口效果
2020/12/09 Javascript
基于wxpython实现的windows GUI程序实例
2015/05/30 Python
APIStar:一个专为Python3设计的API框架
2018/09/26 Python
使用css如何制作时间ICON方法实践
2012/11/12 HTML / CSS
JAKO-O德国野酷台湾站:德国首屈一指的婴幼童用品品牌
2019/01/14 全球购物
澳大利亚家具商店:Freedom
2020/12/17 全球购物
运动会广播稿60字
2014/01/15 职场文书
我是一名护士演讲稿
2014/08/28 职场文书
2015年教导处教学工作总结
2015/07/22 职场文书
经典祝酒词大全
2015/08/12 职场文书
2016优秀员工先进事迹材料
2016/02/25 职场文书
2016年基层党支部书记公开承诺书
2016/03/25 职场文书