1. 程式人生 > 其它 >javascript作用域閉包

javascript作用域閉包

一、什麼是作用域閉包

函式在它所宣告之外的作用域被執行,此時函式仍然能訪問它宣告所在作用域內的變數,這就形成了作用域閉包

function foo() {
  var a = 100
  function bar() {
    console.log(a)
  }
  
   return bar  // 通過函式名來返回函式的引用
}

var baz = foo() // 外部變數引用了foo函式內部的bar函式
baz() //形成了閉包

二、作用域閉包的幾種程式碼實現方式

1. 函式返回一個內部函式,程式碼形式如上

2. 函式返回一個包含方法的物件

function foo() {
    
var a = 100 function bar() { console.log(a) } return { bar: bar } } var baz = foo() baz.bar()

3. ECMAScript模組或commonjs模組

var a = 100
function foo() {
   console.log(a)
}

export {foo } // esm模組方式

module.exports = { foo } //commonjs模式

4. 函式內部執行回撥函式

function foo() {
   
var a = 100 setTimeout(function(){ console.log(a) }, 1000) }