jslab中的Memoization有点疑问

ykl4452 2009-11-18 04:31:24
在fibonacci函数中, 内部匿名函数前面加了感叹号,而不是括号,但却和加括号有一样的效果,这是为什么?
这两者在性能上有差别吗??
另外,l = r = null;这句是为了垃圾回收而特意写的吗?

var fibonacci = function(n){
var rv = {'0':0,'1':1},l=0,r=0,i=0;
document.write('<p>[Memoization Function] Run times:</p>');
!function(n){
document.write((++i)+'->');
if(!(n in rv)){
l = rv[(n-1)]||arguments.callee(n-1);
r = rv[(n-2)]||arguments.callee(n-2);
rv[n] = l+r;
}
return rv[n];
}(n);
l = r = null;
document.write('<p>NO.'+n+' is:'+rv[n]+'</p>');
document.write('<hr/>');
};
...全文
92 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
dh20156 2009-11-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cloudgamer 的回复:]
加号叹号括号都是运算符效果都一样的
就是使函数变成表达式而不是函数定义
[/Quote]
同上。

“另外,l = r = null;这句是为了垃圾回收而特意写的吗? ”
这里只是释放掉这两个变量而已,只要没有造成内存泄露,都会被正常回收。
cloudgamer 2009-11-18
  • 打赏
  • 举报
回复
加号叹号括号都是运算符效果都一样的
就是使函数变成表达式而不是函数定义

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧