萬盛學電腦網

 萬盛學電腦網 >> 腳本專題 >> javascript >> javascript中Function類型詳解

javascript中Function類型詳解

   Function 類型

  function類型,毋庸置疑是js中相當重要的一個玩意。

  1.這玩意首先是一個對象,也就是說它是一個引用類型。陳述:一聽說是對象,是不是很有一種它的基類是object對象錯覺感,No,

  它和object是獨立的2個東西。當你typeof function 時,返回的是 funciton 並非 object

  2.每個函數都是 Function 對象的一個實例,它與其他引用對象一樣具有屬性和方法。由於它是對象所以函數名是指向函數對象的指針

  關於函數的聲明的語法支持:

  ?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <script>      //方式1   function fun(num1,num2){     return num1+num2;   }        //方式2   var fun=function(num1,num2){     return num1+num2;   };      //方式3   var fun=new Function("n1","n2","return n1+n2");      </script>

  講解:3種方式都能完成一個函數的聲明,但各有不同。

  方式1 理解為 一個函數的聲明,方式2,方式3理解為函數表達式。(方式3不推薦使用,原因會導致解析2次代碼,先解釋常規ECMAScript代碼,在解釋傳入的參數,這種

  寫法,參數可以是N個,但是最後一個參數視為函數主體)

  為什麼說不同,主要在於,js解析器對函數聲明 和 函數表達式 解析的不同。解析器會優先讀取函數申明,js引擎在執行時會將函數聲明自動放到執行環境的最頂端。

  而函數表達式則不同,當執行到函數表達式時,才會真正去被解釋執行。關於這點理解很重要!

  看代碼

  ?

1 2 3 4 5 6 7 8 9 10 11 12 <script>   console.log(typeof fun); //"function"   console.log(typeof fun2); //"undefined"   console.log(typeof fun3); //"undefined"   function fun(n1,n2){    return n1+n2;   }   var fun2=function(n1,n2){    return n1+n2;   }   var fun3=new Function("n1","n2","return n1+n2;");  </script>

  3.為什麼函數沒有重載?

  這個問題要從js的語言特性來考慮。在第2條已經說了,函數名稱只是指向函數對象的一個指針。根據指針的概念去理解就清楚了。

  看代碼示例:

  ?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 <script>   function fun(n1){    return
copyright © 萬盛學電腦網 all rights reserved