1. 程式人生 > 遊戲攻略 >《怪物獵人崛起》耳塞4翔蟲3大錘配裝分享

《怪物獵人崛起》耳塞4翔蟲3大錘配裝分享

function關鍵字可以用來在一個表示式中定義一個函式。

你也可以使用Function建構函式和一個函式宣告來定義函式。

語法

let function_expression = function [name]([param1[, param2[, ..., paramN]]]) {
   statements
};

ES2015開始,你也可以使用箭頭函式

引數

name
函式名稱。可被省略,此種情況下的函式是匿名函式(anonymous)。 函式名稱只是函式體中的一個本地變數。
paramN
被傳遞給函式的一個引數名稱。一個函式至多擁有 255 個引數。
statements
構成函式體的語句。

描述

函式表示式(function expression)非常類似於函式宣告(function statement)(詳情檢視函式宣告),並且兩者擁有幾乎相同的語法。函式表示式與函式宣告的最主要區別是函式名稱(function name),在函式表示式中可省略它,從而建立匿名函式(anonymousfunctions)。一個函式表示式可以被用作一個IIFE(Immediately Invoked Function Expression,即時呼叫的函式表示式),它一旦定義就執行。更多資訊請檢視函式

函式表示式提升 (Function expression hoisting)

JavaScript中的函式表示式沒有提升,不像函式宣告,你在定義函式表示式之前不能使用函式表示式:

 notHoisted(); // TypeError: notHoisted is not a function

var notHoisted = function() {
   console.log('bar');
};

命名函式表示式(Named function expression)

如果你想在函式體內部引用當前函式,則需要建立一個命名函式表示式。然後函式名稱將會(且只會)作為函式體(作用域內)的本地變數。這樣也可以避免使用非標準的arguments.callee屬性。

var math = {
  'factorial': function factorial(n) {
    
if (n <= 1) return 1; return n * factorial(n - 1); } };

被函式表示式賦值的那個變數會有一個name屬性,如果你把這個變數賦值給另一個變數的話,這個name屬性的值也不會改變。如果函式是一個匿名函式,那name屬性的值就是被賦值的變數的名稱(隱藏值)。如果函式不是匿名的話,那name屬性的值就是這個函式的名稱(顯性值)。這對於箭頭函式也同樣適用(箭頭函式沒有名字,所以你只能賦予name屬性一個隱性名)。

var foo = function() {}
foo.name // "foo"

var foo2 = foo
foo2.name // "foo"

var bar = function baz() {}
bar.name // "baz"

console.log(foo === foo2); //true
console.log(typeof baz);// undefined
console.log(bar === baz); // false (errors because baz == undefined)

示例

下面的例子定義了一個匿名函式並把它賦值給變數x。這個函式返回它引數的平方:

var x = function(y) {
   return y * y;
};

更多情況下被當作回撥函式使用:

button.addEventListener('click', function(event) {
    console.log('button is clicked!')
})