1. 程式人生 > 其它 >JS函式閉包

JS函式閉包

閉包指的是那些引用了另一個函式作用域中變數的函式,通常是在巢狀函式中實現的。

函式執行時,每個執行上下文中都會有一個包含其中變數的物件。全域性上下文中的叫變數物件,它會在程式碼執行期間始終存在。而函式區域性上下文中的叫活動物件,只在函式執行期間存在。在定義函式時,就會為它建立作用域鏈,預裝載全域性變數物件,並儲存在內部的[[Scope]]中。在呼叫這個函式時,會建立相應的執行上下文,然後通過複製函式的[[Scope]]來建立其作用域鏈。接著會建立函式的活動物件(用作變數物件)並將其推入作用域鏈的前端。這意味著函式執行上下文的作用域鏈中有兩個變數物件:區域性變數物件和全域性變數物件。作用域鏈其實是一個包含指標的列表,每個指標分別指向一個變數物件,但物理上並不會包含相應的物件。

function compare(value1, value2) {
  if (value1 < value2) {
    return -1;
  } else if (value1 > value2) {
    return 1;
  } else {
    return 0;
  }
}
let result = compare(5, 10);