函示 (Function)
- 是 first class function (一級函式)
- 是一種特殊型態的物件,可以被呼叫 (invocable)。
- 每個函式都有兩個參數 this 和 argument
First Class Functions 的特性
- 物件可以被傳遞,函式只是物件的一種,所以函式也可以被傳遞。
- 可以將 function 儲存成變數
- 可以將 function 當成參數代入另一個 function 中
- 可以在一個 function 中回傳另一個 function
- function 跟物件一樣有屬性(property)
function greet() {
console.log('哈囉');
}
// 函式可以有屬性
greet.language = '中文';
console.log(greet);
console.log(greet.language);
參數陣列 (arguments)
function printMyName(firstname, lastname, language){
console.log(firstname); // arguments[0]
console.log(lastname); // arguments[1]
console.log(language); // arguments[2]
console.log('==============');
console.log(arguments);
// console.log(this);
}
printMyName();
printMyName('ailin');
printMyName('ailin', 'liou');
printMyName('ailin', 'liou', 'en');
匿名函示(anonymous function)
匿名函示指本身沒有直接宣告或命名過
// 匿名函數運算式(anonymous function expressions)
var sayHi = function(){
console.log('hi');
}
具名函示
// 具名函數運算式(named function expressions)
var sayHi = function hi(){
console.log('hi');
}
function hi(){
console.log('hi');
}
回傳值
沒有回傳值的函式
function printFullName(firstName, lastName){
console.log(firstName + ' ' + lastName);
}
printFullName('alin', 'liou');
有回傳值的函式
function getFullName(firstName, lastName){
return firstName + ' ' + lastName;
}
console.log(getFullName('alin', 'liou'));