iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 2
0
自我挑戰組

圖解Javascript面試題目30天系列 第 2

Day 02 Function是什麼?能吃嗎? (1) Intro

What is Function?

A function is first-class; a function is considered to be an object.
Wikipedia-JavaScript

This means the language supports passing functions as arguments to other functions, returning them as the values from other functions, and assigning them to variables or storing them in data structures.
Wikipedia-First-class function

Function,也就是函式,是程式裡面執行某項作業的程式碼區塊。若為函式取了相符其功能的名稱,則可以使你的程式碼更容易被閱讀。
在JavaScript中, 函式為一等公民,這代表著函式是可以被當成引數丟進其他函式裡的!除此之外,函式也可以被當成其他函式的回傳值、指定給一個變數、或存在資料結構中。

好的,身為一個程式菜雞,光是上面這段文字就足以冒出很多問號了!所以在正式開始之前,先簡單講解一下一些基礎的專有名詞。

  • 變數與常數
  • 參數與引數
  • 回傳值

變數與常數

我們可以把變數看成兩個主要的部分,一個是其識別字(identifier),另個則是其(value)。在JavaScript中,宣告變數的方法有兩種:var、let。宣告時識別字與值之間以等號(=)相連。
例如執行以下程式碼時,系統就會在記憶體中為你的宣告弄出一個空間,將MrKing這個字串存進去,並且給這個記憶體位置一個名稱: room404,這樣我們之後要存取這個位置時,就能直接用room404這個名稱存取!

let room404 = 'MrKing'

此動作可以拆解成兩個動作:

let room404 //在記憶體中裝潢了一間房間,並將其命名為room404
room404 = 'MrKing' //讓MrKing這個客人(資料,此處的型別為字串)住進去

而宣告常數的方法則是使用const。常數與變數之間最大的不同,就是常數不能再一次的指定值給它。

const room200 = 'Ok' //代表Ok永遠也不會搬出room200這個房間(記憶體位置)了!
room404 = 'MrSmith' //當room404讓MrSmith這個客人(資料,此處的型別為字串)住進去時,意味著上一個客人已經被強制遷出

參數與引數

遙記當初老師上課時,經常聽到這兩個詞,對我來說始終分不清出參數和引數的差別。甚至聽網頁工程師朋友說,這些詞很容易被菜雞們誤用。所以這邊將簡單介紹這兩個名詞的差別。

中文 參數 引數
英文 parameter argument
使用時機 宣告函式時 使用函式時
function plus(a,b){
  return a+b
} //a 跟 b 是 參數parameters

plus('55','66') //55跟66是 引數argument

在其他程式語言可能會遇到的argument error,即是引數錯誤而非參數,例如:

ArgumentError: wrong number of arguments (given 2, expected 1)

此錯誤訊息就是在執行function或method的時候,給了他與期望數量不符的引數。

所以,看到這邊的你,下次跟工作夥伴討論相關噴錯的訊息時,可以正名為「引數錯誤」而非「參數錯誤」了:DDD


那麼第二天的內容就先到這邊告一段落了,明天將會繼續說明回傳值以及一些function的面試題目:)


上一篇
Day 01 緣起
下一篇
Day 03 Function是什麼?能吃嗎? (2) First Class Function
系列文
圖解Javascript面試題目30天9
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
gatesakagi
iT邦新手 3 級 ‧ 2020-09-18 10:45:56

(發問)var 跟 let 這兩者的差別在哪呢?

我要留言

立即登入留言