javascript中Function類型詳解

來源:互聯網
上載者:User

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 n1+100;

  }

  function fun(n1){

   return n1+200;

  }

  console.log(fun(1));// 201 

    

  //以上寫法在解析後應為

    

  var fun=function(n1){

    return n1+100;

  }

  fun=function(n1){

   return n1+200;

  }

    

  // fun 的引用被覆蓋了

  console.log(fun(1));// 201 

 </script>

  都是寫基本概念,希望對這塊有盲點的起到協助!有什麼需要指正的地方,希望各位霸氣留言指正。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.