<!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>Document</title>
<script>
//闭包(面试)
//闭包:有权访问另外一个函数作用域里变量的函数
//大白话:函数里套函数
//-闭包优点:
//1.保护函数内的变量安全,防止全局变量污染问题
//2.在内存中维持一个变量
//-闭包缺点:
//1.由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。
//2.使用不当·可能引起内存泄漏|
// function a() {
// var i = 10;
// return function b() {
// alert(++i);
// }
// }
// a()();
function a() {
var i = 10;
function b() {
alert(++i);
}
return b
}
var c = a();
c();
// 全局变量:
// 优点:在哪都能访问
// 缺点:全局变量污染
// 局部变量:
//es5 IIFE(闭包):模仿块作用域
(function () {
var i = 10;
function box() {
console.log(i);//作用域链
// 先在自己作用域里查找这个变量,自己作用域里没有,
//去上级作用域里查找,若找不到,再往上上级作用域里查找...
//直到全局作用域window,若找不到,返回undefined
}
box();
})();
//es6 {let i=10}
</script>
</head>
<body>
</body>
</html>