JavaScript Day 7. 浅谈 Function

自己常常在写程序的时候,因为习惯一种写法就很自然写下去,不太会去思考为什麽要这样用,就像每天早上都会去上课,所以上课是理所当然的,而忽略掉我们为什麽要上课;因此今天就来为平常写程序常常很自然就写下去的 function ,做个小笔记帮助自己去了解它的意义。


引用 MDN 的说法:

函式是构成 JavaScript 的基本要素之一。一个函式本身就是一段 JavaScript 程序—包含用於执行某一个任务或计算的语法。要呼叫某一个函式之前,你必需先在这个函式欲执行的 scope 中定义它。

上面这一段说法,我最多可以理解成「要执行一段程序需要写一个 function。」,然後我还是不明白他背後的意义。有一天问了同学为什麽要用 function 呢?就在这一次终於获得一个我看的懂的答案。

想像 function 是一个工具箱,里面装了许多用途的工具,要使用这些工具必须打开工具箱才能顺利使用。有些工具很零散,为了让桌面看起来整齐乾净,我们可以使用许多工具箱把它们一箱一箱装起来。

类似这样子的解说好像蛮适合我的,很容易领悟XD

以下开始介绍函式的使用方法:

  • 具名函式 (Named Function)
  • 匿名函式 (Anonymous Function)

具名函式 (Named Function)

具名函式,指的就是有名字的函式,通常的写法是在 function 的旁边加上自定义名称,大概的写法如下:

function morningAction () {
    console.log("起床");
}

morningAction ();

匿名函式 (Anonymous Function)

匿名函式,指的就是没有名字的函式,模式大概是 变数名称=function(){ ... } 这个样子,把一个函式透过指定给某个变数:

let a = function() {
  console.log('Hello');
}

a();

Calling Functions (函式呼叫)
我们在写函式的时候会发现,如果只是把函式写出来,这个函式是不会自动运作的,因为函式必须透过呼叫他才能正常运行;可以看到上面的范例,在函式的底下写了一段 morningAction () 这个就是呼叫函式,做了这个动作以後函式才会执行。

IIFE (立即执行函式)
IIFE全名为 ( Immediately Invoked Function Expression ),是一个定义完立即执行的函式,他又称为 ( Self-Executing Anonymous Function ),中文为「自我执行匿名函式」。

IIFE 立即函式的写法范例:

let hello = function(name){
	console.log('Hello ' + 'Abe');
}();

// Hello Abe

可以看到与上面不同的是,这一次我们没有特地把 hello() 写出来,而是电脑直接读到後面的 (),就知道要立刻呼叫这个函式,这个就是立即函式的写法。

使用立即函式的好处是,能够立即执行程序码,省略了呼叫的步骤,还可以避免污染全域,因为我们可以让执行的对象只存在 IIEF 里,因此可以避免污染到其他地方的变数。另外,在这里我没有特别针对 IIEF 做介绍,只是解释了 IIEF 的用法。



参考资料:
有点长的浅谈 JavaScript function 函式
MDN IIFE



<<:  [DAY 11] PageBreakItem

>>:  Day1 整体经营策略、核心价值

Open API 概念

为什麽想写这个? 一样是在某次开会听到这个名词,脑中开始想说这跟api有什麽不一样,为什麽要特别加...

30天不间断的文章之旅_函式的基本介绍

哎呀!因为周末打了疫苗,不小心烧了两天醒醒睡睡的,本来说好是30天不间断的文章之旅,断了2天,大家原...

Day9 重叠条件配对池 Overlapping MatchProfiles

在一些比较普通的应用场景,我们产生一个 matches 的流程会像是,由 Director 轮询呼叫...

[Vue.js + Axios] ToDoList (下)

续前一篇的例子: 分段进行: Vue 基本结构及使用到的属性: var app = new Vue(...

Day-11 priority queue

Priority queue Priority queue和queue一样也有两种形式 : max ...