1.声明函数

  • 函数声明
function fun(){};
fun();
  • 字面量函数
var s = function(){};
s();
  • 构造函数
function Fun(){};
var fun=new Fun();

2.回调函数

某个动作做完之后,才执行的函数。

function move( obj , attr , step , stopValue , fn ){
     // if(fn){ fn(); }
     fn&&fn();   //如果发现一个为假,就不会判断后面的!
}

使用回调函数,可解决内嵌调用本函数的死循环现象。

btn.onclick=function(){
     move(oDiv,"left",10,500,function(){
            move(oDiv,"top",10,500);
     });
}

3.伪函数

<a rel="nofollow" href="javascript:fun();"></a>
//执行JavaScript里的代码,忽略默认事件,如<a rel="nofollow" href="javascript:void(0);"></a>。

4.匿名函数

(function(){ alert("a"); })();
(function(name){ alert(name); })(name);
//匿名函数可以自执行。

5.闭包

  • 闭包是指函数里嵌套函数

function fun(){ //变量a会长期存于内存中(类似全局变量),直到浏览器关闭。 var a=10; return function(){ alert(a+1); } } var s=fun(); s();//11。


* 闭包可以避免全局污染。其可拥有私有变量a,不需要设置全局变量a.

* 闭包会引起内存泄漏(导致闪退或系统崩溃),可手动释放。

* 闭包会导致this指向错乱。