JavaScript函数闭包

59 阅读1分钟

JavaScript 函数闭包可以更好地控制变量和函数的作用域,防止变量和函数污染全局作用域。也可以在父函数外部访问内部函数和变量,利用它可以定义有状态的函数。

什么是JavaScript函数闭包?

函数闭包是指 JavaScript 中的一个函数,它可以访问另一个函数作用域中的变量,也可以保持住外部函数的作用域。闭包通过创建函数内部的形式来实现。它通常发生在JavaScript函数的嵌套函数中,当内部函数使用到外部函数中的变量时,可以让封闭的环境中的变量不被销毁从而实现变量的保存。

下面是一个JavaScript函数闭包的示例代码:

function outerFunc(){ 
    var localParam = 'I am a parameter'; 
    function innerFunc(){ 
        alert(localParam); 
    } 
    return innerFunc; 
} 

// 保存函数地址 
var fp = outerFunc(); 

// 执行函数 
fp(); // alert "I am a parameter"

在上面的例子中,内部函数innerFunc中引用了外部函数outerFunc中的变量 localParam,当outerFunc结束后返回整个函数的地址fp时,innerFunc被存储在fp中,并且保留outerFunc的作用域并让localParam的值得以保存。

从上面可以看出,javascript函数闭包的目的是让内部函数能够调用外部函数中的变量,用于保护和限制变量和函数的作用域,同时可以让内部函数保持变量的状态,提高代码的灵活性和可复用性。