javascript闭包和高阶函数
2019-07-10 本文已影响0人
HelloWorld_29a2
1.闭包
对于前端开发程序员来说,闭包是个难懂又必须去了解的概念。闭包的形成与变量的作用域以及变量的生存周期密切相关。
2.变量作用域
变量作用域,就是说变量的有效范围。经常说到的就是在函数中声明变量的作用域。
当在函数中声明一个变量的时候,如果该变量前面没有带关键字var,这个变量就是会成为全局变量,这个当然是一种容易造成命名冲突的写法。
如果你在函数中用var关键字声明变量,这个时候变量就是局部变量,只有在该函数内部才能访问到这个变量,在函数外部是访问不到的。
function test(){
var a=1;
console.log(a); //打印出1
}
test();
alert(a); //输出:a is not defined
这里还有就是 函数作用链是往外一层一层搜索,一直搜索到全局变量为止。
var a =1;
function test1(){
var b = 2;
function test2(){
var c = 3;
alert(b);//输出2
alert(a); //输出1
}
test2();
alert(c); // 输出 c is not defined
}
test1();
3.变量的生存周期
对于全局变量说,全局变量的生存周期是永久的,除非是我们自己销毁这个全局变量,这个全局变量才会消失。
而对于函数内部var 定义的局部变量来说,当退回函数调用时,就会失去价值,从而结束被销毁。