1.闭包的定义
闭包是指有权访问另一个函数作用域中变量的函数,JS高级程序设计简单的理解就是,一个作用域可以访问另外一个函数内部的局部变量。
<script>
function fn(){
num=10;
function fun(){
console.log(num);
}
}
fn();
</scriipt>
由上面的代码可知,fn()函数是一个闭包函数,当进入作用域观察时,可以看到如下的情况:
由此可得,闭包函数就是fn()
被访问的变量所在的函数就称之为闭包。
2.闭包的作用
在函数外面的作用域可以访问内部的函数作用域。
延伸了变量的作用域
3.闭包的案例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>打车案例</title>
</head>
<body>
<script>
// 写入立即执行函数
var car = (function () {
var start = 11;
var total = 0;
//返回一个对象
return {
//具有两种方法
price: function (n) {
if (n > 3) {
total = start + (n - 3) * 5;
} else {
total = start;
}
return total;
},
busy: function (flag) {
return flag ? total + 10 : total;
}
}
})();
console.log('打车价格是' + car.price(2) + '元');
console.log('打车价格是' + car.price(6) + '元');
</script>
</body>
</html>
完成在其他作用域去调取外部作用域的操作