函数式编程(javascirpt)
2010-09-14 13:44:24 来源:WEB开发网如果上边的几个都可以完全理解,那么常识看看最下面的这个计算一个函数的平方根的函数sqrt(x),你会发现这个函数很有意思,其中的那个匿名函数最有意思,我写了个测试函数:
function funcsTester(){
//计算两个数的平方和的匿名函数
var y = (function(x, y){ return add( expt(x, 2), expt(y, 2) ); })(3, 4);
print(y);
print(halfIntervalMethod(sin, 2.0, 4.0));
print(halfIntervalMethod(function(x){return expt(x, 3) - mul(2, x) - 3;}, 1.0, 2.0));//x^3-2x-3
print(fixedPoint(cos, 1.0));//cos的不动点
print(fixedPoint(function(x){return add( sin(x), cos(x)); }, 1.0));
print(sqrt(100));
}
运行结果如下:
js> funcsTester()
25
3.14111328125
1.89306640625
0.7390822985224024
1.2587315962971173
10
js>
好了,关于函数式编程就大概介绍到这里,下面简单说说这个rhino包
关于Rhino
rhino是一个纯java的javascript引擎的实现,下载之后,将js.jar加入classpath,然后在命令行中输入:
java org.mozilla.javascript.tools.shell.Main
即可启动,可以使用load(path/of/script)来加载,加载完成后即可使用脚本中定义的函数,非常方便,当然DOM中的一切是不能用的,比如alert什么的,但是javascript不只是用来脚本化WEB页面的。可以使用print进行打印,使用quit()退出等,下面做一个关于rhino的例子:
user = {
name:"abruzzi",
password:"123456",
address:{
zip:"612345",
street:"west HuangQuan road"
},
getName: function(){return this.name;},
getPassword: function(){return this.password;},
getAddress: function(){ return this.address.zip+"n"+this.address.street;}
}
$ java org.mozilla.javascript.tools.shell.Main
Rhino 1.7 release 2 2009 03 22
js> load('~/development/myLib/HighOrderFunc/json.js')
js> user
[object Object]
js> user.getName()
abruzzi
js> user.getPassword()
123456
js> user.getAddress()
612345
west HuangQuan road
js>
在rhino的发行包中有一些特别有趣的例子,大家不妨自己动手做一下,看看效果,同时体会一下函数式编程的优美,简介。
Tags:函数 编程 javascirpt
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接