征服RIA:函数式编程的原理
2009-03-11 14:33
148 查看
函数式编程的原理
在考虑如何使用JavaScript实现函数式编程前,我们首先要理解以下两个知识点:
1.JavaScript中函数、方法的调用方法
在JavaScript中,有两种调用函数的方式。一般的方式是把参数放在括号中,另一种方式是同时把函数和参数都放在括号中。如:
function test(x)
{
alert(x);
}
test("hello");
(test)("hello word");
我们知道代码中括号处理的优先级,JavaScript中计算括号所包含的表达式将返回一个值或者一个函数。正由于操作符“()”可以返回一个函数,为JavaScript实现函数式编程提供了先决条件。
2.匿名函数
匿名函数即没有名字的函数或方法,我们在前面的例子中已经见过。匿名函数可以认为是一次性函数。当你只需要用一次某个函数式时,它们就特别有用。通过使用匿名函数,由于没有相关的引用及标识,执行后就会被垃圾回收,所以使用匿名函数更有效率。下面简单地比较一下匿名函数与其他有引用或标识函数:
function test(x)
{
alert(“定义一个函数标识”);
}
var test = function(){alert(“将一个匿名函数,指向一个引用”)};
(function(){alert(“我是一个匿名函数”)})();
大多数语言都支持将函数作为运算元(参数)参与运算。不过由于对函数的定位不同,因此它们的运算结果也不一样。当JavaScript中的函数作为参数时,是通过引用传递的。“函数参数”与普通参数并没有什么不同,其结果都返回唯一的值。
function test( func )
{
alert(func);
}
teset( (function(){return “匿名函数作为参数”})())
函数式编程的每个变量都是临时产生的。或者可以这么认为:在函数式中没有变量这个概念,任何数据都是根据实际需要,按一定的规则(函数)计算后得到的,这也从一定程度上解决了原子变量并发访问的问题。
在考虑如何使用JavaScript实现函数式编程前,我们首先要理解以下两个知识点:
1.JavaScript中函数、方法的调用方法
在JavaScript中,有两种调用函数的方式。一般的方式是把参数放在括号中,另一种方式是同时把函数和参数都放在括号中。如:
function test(x)
{
alert(x);
}
test("hello");
(test)("hello word");
我们知道代码中括号处理的优先级,JavaScript中计算括号所包含的表达式将返回一个值或者一个函数。正由于操作符“()”可以返回一个函数,为JavaScript实现函数式编程提供了先决条件。
2.匿名函数
匿名函数即没有名字的函数或方法,我们在前面的例子中已经见过。匿名函数可以认为是一次性函数。当你只需要用一次某个函数式时,它们就特别有用。通过使用匿名函数,由于没有相关的引用及标识,执行后就会被垃圾回收,所以使用匿名函数更有效率。下面简单地比较一下匿名函数与其他有引用或标识函数:
function test(x)
{
alert(“定义一个函数标识”);
}
var test = function(){alert(“将一个匿名函数,指向一个引用”)};
(function(){alert(“我是一个匿名函数”)})();
大多数语言都支持将函数作为运算元(参数)参与运算。不过由于对函数的定位不同,因此它们的运算结果也不一样。当JavaScript中的函数作为参数时,是通过引用传递的。“函数参数”与普通参数并没有什么不同,其结果都返回唯一的值。
function test( func )
{
alert(func);
}
teset( (function(){return “匿名函数作为参数”})())
函数式编程的每个变量都是临时产生的。或者可以这么认为:在函数式中没有变量这个概念,任何数据都是根据实际需要,按一定的规则(函数)计算后得到的,这也从一定程度上解决了原子变量并发访问的问题。
相关文章推荐
- 征服RIA:函数式编程的原理
- JavaScript中函数式编程的原理
- JavaScript 函数式编程的原理
- Scala 函数式编程原理 第四课(Conditions and Value Definitions)
- Python笔记4——函数式编程,高阶函数,闭包
- Python学习四——函数式编程
- Java 并发编程:volatile的使用及其原理
- 大话丽纳科斯原理及编程系列之扫盲篇
- Winsock编程原理
- C#函数式编程之递归调用
- Socket原理与编程基础
- Scala入门系列(十):函数式编程之集合操作
- 【编程开发】MD5算法原理
- socket编程原理
- java8 函数式编程
- KVC/KVO原理详解及编程指南
- Apache Beam中的函数式编程理念
- 从编程角度揭示病毒感染原理--之百变星君(病毒易容术)(下)
- 从编程角度揭示病毒感染原理--之踏腊无痕水上飘(进程隐藏技术)