日期:2014-05-16  浏览次数:20347 次

求问。 !function 这样代表什么意思?
 !function(n){  
        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);  



 !function这个是什么意思?

------解决方案--------------------
字面看是取非
实际为了直接运行这个函数
------解决方案--------------------

var rv = [1,1], l, r;
var x = !function(n){  
        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];  
    }(10);
alert(x);
alert(rv);

PS:函数是生成一个斐波拉契数列,数列长度为函数的参数+1
------解决方案--------------------
定义完了直接传入参数 n 调用,俗称立即执行函数
------解决方案--------------------
其实就和

function a(n){
//方法体
}

// n声明并赋值

a(n);