函式是 JavaScript 非常重要的特性,指的是將一或多段程式包起來,之後可以重覆使用。JavaScript 在執行時的呼叫堆疊也是以函式作為單位。
用 typeof 去檢查一個函式的型別他會顯示 function,但他仍然屬於 Object 物件型別的一種,可以把它視作可以被呼叫(be invoked)的特殊物件。 -- 008
函式宣告方式有好幾種,但通常會有三個部分
()
內的部分{}
內的部分這是在 VS code 裡的預設範本。function 是函數的宣告方式,通常會給函數一個名稱,然後括號是參數(parameters),參數與參數間用 ,
隔開。
這邊括號中的 params 跟 008 敘述的 arguments 不一樣,咦,是什麼意思?
如下寫一個簡單的 function,下面呼叫函式內的值就是 arguments
function sum(a, b) {
return a + b;
}
sum(3, 4); // 7,呼叫函式傳值給 a, b
sum(6, 7); // 13,呼叫函式傳值給 a, b
sum(8, 2); // 10,呼叫函式傳值給 a, b
console.log(sum(3, 4), sum(6, 7), sum(8, 2));
搜尋 stackoverflow 裡面的回答,簡單的說:
Parameter:函式宣告裡的參數。
Argument:引數,呼叫函式時傳給 params 的資料。
宣告一個變數 = 一個函式,而函式沒有指定名稱,稱為匿名函式。
var QQㄋㄟㄋㄟ好喝到咩噗茶 = function(珍珠, 奶茶) {
return 珍珠 + 奶茶;
};
也可以再替 function 命名
var QQㄋㄟㄋㄟ好喝到咩噗茶 = function 珍奶(珍珠, 奶茶) {
return 珍珠 + 奶茶;
};
但這名稱只在自己的函式作用域大括號 {}
裡有效,離開 {}
變數名珍奶就不存在了。
看使用情境而定,可以透過變數名取得函式,不一定要另外命名。
var QQㄋㄟㄋㄟ好喝到咩噗茶 = function 珍奶(珍珠, 奶茶) {
console.log(typeof 珍奶); // typeof function
return 珍珠 + 奶茶;
};
console.log(typeof 珍奶); // typeof undefined
var foo = new Function("number", "return number * number");
foo(50); // 2500
如上的方法,直接輸入函式名稱(參數),例:sum(3, 4)、foo(50);其他呼叫的方式還有 .call() 跟 .apply(),但還沒念到,今天就先到這裡。
參考資料
What's the difference between an argument and a parameter? -- stackoverflow
008 天重新認識 JavaScript
QQㄋㄟㄋㄟ好喝到咩噗茶