函示 (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'));

延伸閱讀

results matching ""

    No results matching ""