iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 17
1
Modern Web

JS讀書筆記系列 第 17

JS讀書筆記30天 - Day17 函式2

函式的特性

函式屬於一種物件,但和一般物件仍有所不同。

首先,函式必定可以被呼叫,且含有程式碼片段。

程式碼片段中,可以包含傳入值的參數、區域變數、this、可回傳的值return

另外,函式可以選擇命名,稱為具名函式,又稱函式陳述式;或是選擇不命名,稱之為匿名函式,或是函式表達式。

匿名函式仍具有可被呼叫的性質,但不是所有的函式表達式都是匿名函式。

立即函式

定義

又稱 IIFE。可以不用呼叫,直接被執行的函式,稱之為匿名函式。

寫法

寫法分兩種:

(function IIFE(){
  // 要執行的程式
}());
(function IIFE(){
  // 要執行的程式
})();

立即函式和一般函式的差異在於多了一個半形小括弧(()),且函式本身也要用半形小括弧(())包覆起來。

而上面兩種寫法的差異在於包覆的半形小括弧(())的位置。

增加的一個半形小括弧(())放在函式的尾端,並加上一個半形分號(;),記得一定要加半形分號(;),因為當連續寫兩個立即函式時,編譯器不會主動未立即函式加上結束的半形分號(;),可能會出現錯誤。

而包覆的半形小括弧(()),可以選擇將尾端的半形小括弧(())一起包覆起來,或是僅包覆到右半形大括弧(})結束,讓尾端的半形小括弧(())獨立在外。

特性

立即函式最大的作用,在於會立即執行,不需額外呼叫。並且無法在函式外再被執行,常用來約束變數的作用域。

此外,通常立即函式可以省略函式的命名,使用匿名的方式進行。

(function (sex){
  return sex;
})("我是女生");

帶參數的立即函式

參數放在最後的半形小括弧(())中,回傳給前面半形小括弧(())中參數的變數。

半形大括弧({})內,可以寫需要回傳的值,利用return的方式。

(function IIFE(參數的變數){
  // 要執行的程式,可寫回傳的return
})(參數);

ex:

(function IIFE(sex){
  return sex;
})("我是女生");

上一篇
JS讀書筆記30天 - Day16 物件2
下一篇
JS讀書筆記30天 - Day18 let和const
系列文
JS讀書筆記30

尚未有邦友留言

立即登入留言