javascript作用域閉包
阿新 • • 發佈:2021-06-16
一、什麼是作用域閉包
函式在它所宣告之外的作用域被執行,此時函式仍然能訪問它宣告所在作用域內的變數,這就形成了作用域閉包
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) }