我們經常會將功能寫成一個函式,之後可以再重複使用,是JavaScript非常重要的特性。而函式通常會有回傳值,使用return作為最後的回傳值輸出,但並非每種函式都需要回傳值,也有可能透過輸出的方式來將結果輸出。
function eat(a,b){
return a+b
}
函式的呼叫是使用函式名稱加上括號(()),以及在括號中傳入對應的參數值,即可呼叫這個函式執行。例如:
function eat(a,b) {
return a+b
}
console.log(eat(1,2)) //3
function() {}
而另一種函式表達式(FE):用變數/常數指定匿名函式
const eat = function(a,b) {
return a+b
}
(function () {...})()
(function () {...}())
IIFE的主要用途:分隔作用範圍,避免全域作用的汙染
副作用:代表著可能更動到外部環境,或者更動到傳入的參數值。
函式又以兩種方式區分: 純粹函式 與 不純粹函式。
純粹函式(pure function)滿足以下定義的函式:
const sum = function(value1, value2) {
return value1 + value2;
}
不純粹函式(impure function)
需要依賴外部的狀態值(變數值)
let count = 1;
let increaseAge = function(value) {
return count += value;
}
最重要的特徵就是函式宣告提升,意思是執行程式碼之前可以先讀取函式宣告。所以可以把函式宣告放在呼叫之後,如範例:
eat(1,2) //3
function eat(x,y){
return (x+y)
}
不過使用匿名函式指定值的方式(函式表達式),就不會有整個函式都被提升的情況,只有變數名稱被提升,必須再使用前先賦值,所以這段程式碼執行時就會出錯:
milkTea() // milkTea is not a function
let milkTea = function(){
console.log('好喝')
}
今天覺得寫的還不夠,但至少為了自己補充一些可能遺忘的基礎觀念,還有許多關於函式的重點沒有提到,此外還有ES6箭頭函式的介紹,敬請期待
參考連結: 從ES6開始的JavaScript學習生活