1、命名函數
function abc(){ // abc是函數名 console.log("a"); } var fn=abc; //把函數abc地址賦值傳給fn fn(); // 或者 abc(); => 執行函數
命名函數的特點:
1.有函數名,可以通過函數調用函數
2.聲明提前,當執行到script 標簽時,會預先將所有的命名函數存在堆中,並在棧中定義函數名引用該函數地址
2、匿名函數
1 //變量匿名函數 2 var fn=function(){ 3 4 } 5 6 //對象方法定義 7 var obj={ 8 fn:function(){ 9 10 } 11 } 12 13 // 自執行函數 缺點:只能執行一次,無法再次調用,會造成內存泄漏 14 (function(){ 15 16 })();
匿名函數特點
1.匿名函數沒有名字
2.可以設置給一個變量,或者設置給一個對象的屬性
3.命名函數可以在函數定義之前(同一個script內)和之后(script標簽可以相同,可以不同)執行,但是匿名函數只能在函數定義后執行(不會聲明提前)
4.自執行函數,只能執行一次,無法再次調用,會造成內存泄漏
3、構造函數定義
1 //構造函數 2 var fn=new Function("參數1","參數2",..."函數內容")
構造函數特點
1.構造函數中,前面的內容就是這個創建函數的所有參數,最后一個內容就是這個函數執行語句塊
2.要求所有內容都必須是字符串
3.缺點:構造函數創建函數缺點是運行速度慢,效率低,因為需要將所有的字符串轉換為代碼
逆戰203