iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 13
0
Modern Web

JavaScript Note系列 第 13

一級函式 & 函式應用

  • 分享至 

  • xImage
  •  

一級函式

在MDN的JavaScript的教學,一開始就說了,JavaScript是具有一級函式(First-class functions)的輕量級程式語言,函式相信大家都了解,那究竟甚麼是一級函式,它有什麼重要性?
在JavaScript中,除了基礎型別(Primitive Type)之外的型別都可以視為物件型別(Object Type),包括函式。
函式作為物件,意味著,函式能實現物件的功能,這個觀念非常特別,也非常重要。

有哪些功能?

  • 當作一個值指派給變數。
let getValue = function () {}
  • 作為陣列中的元素。
let ary = [];
ary.push(function () {})
  • 當作物件的屬性值。
let obj = {
    prop: function () {}
}
  • 當作函式的回傳值。
function getValue() {
    return function () {}
}
  • 當作函式的引數。
function greeting(name) {
    console.log(`Hello!${name}`);
}
function processUserInput(callbackfn) {
    let name = 'Mary';
    callbackfn(name);
}
processUserInput(greeting);

callback function有很多地方需要討論,之後會另開篇幅。

函式的應用

有程式設計基礎後,下一個議題就是學習如何使用函式,函式可以讓我們重複使用相同的邏輯,方面管理程式碼。
函式在JavaScript中占有無比重要的地位,我們必須得了解函式有哪些形式,才能在面對不同的情境來使用。

  • 第一種最簡單,沒有參數與回傳值。
let x = 10;
let y = 20;
function getValue() {
    let sum = x + y;
    console.log(sum);
}
getValue(); //30

x與y皆為全域變數,sum為區域變數,這不是一個好的方法,這個範例只是單純做示範。

  • 第二種,有參數沒有回傳值。
function getValue(x, y) {
    let sum = x + y;
    console.log(sum);
}
getValue(10, 20); //30

跟剛剛的例子比起來,這個好多了,所有變數皆為區域變數,當函式執行完,區域變數的生命週期也隨之消失,不會占用記憶體空間。

  • 第三種,有參數有回傳值。
function getValue(x, y) {
    return x + y;
}
let sum = getValue(10, 20);
console.log(sum);

這種方式很常用,我們常需要函式做完運算後,把結果傳給另一個變數,再接續處理。

  • 第四種,沒有參數有回傳值。
let x = 10;
let y = 20;
function getValue() {
    return x + y;
}
let sum = getValue(10, 20);
console.log(sum); //30

以上就是函式的各種形式,在我們了解更進階的函式觀念之前,應該要把基礎的應用學好才是正確的學習途徑。


上一篇
Function 函式
下一篇
Call Stack 呼叫堆疊
系列文
JavaScript Note31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言