作用域和闭包以及自执行函数
作用域
作用域分为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
以上就是变量作用域和闭包以及自执行函数的介绍