JavaScript-函式就是物件

一級函式(First class function)

在JavaScript中,函式可以被視作一級值。
一級函式(First class function),指的是可以處理程式語言中對其他任何型別(物件、字串、布林值、純值)的方式來處理它;換句話說,我們也可以對一級函式做出任何其他型別能做得到的事,包含以下:

  • 將函式賦值給一個變數
  • 將函式當成傳入參數,成為另外一個函式的引數
  • 函式可以作為回傳值(在一個函式中,回傳另一個函式)

函式是特殊型態的物件

在JavaScript中的函式有物件的特色,是一種特殊型態的物件。

  • 函式中可以附屬有純值(primitive)(用name/value pair表示)
  • 函式中可以附屬有物件
  • 函式中可以附屬有其他函式

另外,函式包含兩個特別的屬性,一個是名稱(name),一個是執行的程式內容(code)。

  • 在name的部分,函式可以是匿名的(anonymous),也就是可以不一定要有name。
  • 而code的部分,也就是我們撰寫的程式碼內容。換句話說,我們撰寫的程式碼並非函式,而只是函式這個特殊物件中的一個屬性而已。而這個屬性可以透過”()”方法被呼叫、執行。

程式碼說明

首先宣告一個函式為greet,因為在JavaScript中的函式同等於物件,因此我們用”.”為greet創造language屬性的值。在其他程式語言中,這樣會出錯,但是在JavaScript中是可行的。

1
2
3
4
5
6
7
8
function greet(){
console.log('hi');
}

greet.language = 'english';

console.log(greet);
console.log(greet.language);

執行印出結果

以下解釋整個創建、執行的過程。


首先在創建階段會在全域記憶體中先創建一個全域物件,他的名稱是greet。而他的程式屬性,包含所寫的程式碼內容。而用”()”呼叫,即可執行該函式。

© 2020 Leah's Blog All Rights Reserved. 本站访客数人次 本站总访问量
Theme by hiero