JS中的闭包和惰性函数
2019-08-20 本文已影响6人
追逐_chase
web.jpeg
闭包
- 一个函数A访问另外一个函数B的数据
闭包的作用
- 可以间接访问封闭空间私有数据
- 获取数据只能通过指定的接口
- 在设置数据的时候可以进行校验处理
- 延长变量的生命周期
function fn(){
var a =10;
return function(){
a++;
return console.log(a);
};
}
//访问 局部变量
var f = fn();
f();
f();
// 如果 return a ; 就是延长局部变量的声明周期
- 通过指定的方法获取数据 和 对数据的处理
- getName获取数据
- setName设置处理数据
function demo (){
var name = "cc";
var age = 18;
return function(){
return {
getName:function(){
return name;
},
setName:function(newName){
if(newName){
name = newName;
}
return name;
},
getAge:function(){
return age;
},
setAge:function(newAge){
if(newAge < 0){
newAge = 0;
}
return (age = newAge);
}
}
}
}
惰性函数
//惰性函数: 做一次性初始化的操作
function foo(){
//初始化操作
console.log("foo");
//更新函数的执行内容,更新函数体
foo = function(){
console.log("oo-foo");
}
}
foo();
foo();
立即执行函数
- 通用格式:
()()
; - 作用:
将局部变量转化为全局变量
(function(window){
var name_cc = "测试";
window.name_cc = name_cc;
console.log(window);
})(window);
console.log(name_cc);
不同形式的立即执行函数
//匿名函数
+function(){
console.log("1");
}();
//匿名函数
-function(){
console.log("2");
}();
//匿名函数
!function(){
console.log("3");
}();