JavaScript闭包是指函数在定义的同时创建的作用域的概念,它可以保存函数运行的上下文状态,也可以让它访问到变量、函数等。让外部无法访问到的。
JavaScript闭包通常使用function()
语法创建,简单的实例如下:
function f1(){
var name = 'AI';
function f2(){
alert(name);
}
return f2;
}
var res = f1();
res(); // AI
在上面的代码中,我们创建一个f1函数,它定义了一个局部变量name, 然后return一个f2函数,在f2函数中可以访问name变量,这就是一个闭包。
你也可以使用ES6新语法创建闭包,大致如下:
let globalVar = 'Global'
let f1 = () => {
let localVar = 'Local';
let f2 = () => {
console.log(globalVar, localVar)
}
return f2;
}
let res = f1();
res(); // Global Local
以上就是JavaScript中的闭包的介绍和使用教程,它的优势明显,可以大大提高代码的可读性、可复用性以及封装性。
一个普通的函数function,如果它可以访问外层作用域的自由变量,那么这个函数和周围环境就是一个闭包.
从广义的角度来说: JavaScript中的函数都是闭包;
从狭义的角度来说:JavaScript中的一个函数,如果访问了外层作用域的变量,那么他就是一个闭包.