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函数闭包的目的是让内部函数能够调用外部函数中的变量,用于保护和限制变量和函数的作用域,同时可以让内部函数保持变量的状态,提高代码的灵活性和可复用性。