作用域和闭包以及自执行函数
作用域
作用域分为2种
1、全局作用域
全局作用域就是在js的任何位置都能访问过
2、函数作用域
只能在函数里面调用的称之为函数作用域
闭包
嵌套在函数里面的函数及周边的变量叫闭包
闭包存在的问题是:周边变量不会被释放,常驻内存中
闭包的缺点:消耗内存
下面我们做一个闭包的示例
在函数中我们调用另一个函数,让第二个函数
/闭包
function test(){
var b = 2;
return function(){
var c = 3;
console.log(b);
}
}
var new1 = test();
new1();
打印结果得到的是2
下面我们在调用一次new1()
function test(){
var b = 2;
return function(){
var c = 3;
console.log(b);
}
}
var new1 = test();
new1(); new1();
打印的结果是2 2
由此我们得到一个结论,我们要想打印下面这个函数的结果,我们就用闭包做
function test(){
var b = 2;
}
var new1 = test();
new1();
我们刚才说到闭包存在的问题是:周边变量不会被释放,常驻内存中下面我们举例说明
function test(){
var b = 2;
return function(){
b++
console.log(b);
}
}
var new1 = test();
new1();new1();
打印的结果是3 4
我们在调用一个函数
function test(){
var b = 2;
return function(){
b++
console.log(b);
}
}
var new1 = test();
new1();new1(); new1();
现在的输出结果是 3 4 5
自执行函数(立即执行函数)
自执行函数有2中写法
//第一种写法
(function (){
console.log(1);
})();
//第二种写法
(function (){
console.log(2)
}());
自执行函数也是也是一个闭包
var aa = (function (){
var a = 55;
function test(){
a++;
console.log(a);
}
return test;
})();
aa();aa();
打印结果56 57
以上就是变量作用域和闭包以及自执行函数的介绍