匿名函数和闭包
来源:互联网 发布:linux开机过程 编辑:程序博客网 时间:2024/05/16 09:48
1. 匿名函数
alert((function() {return "Lee";})()); //使用()匿名函数直接调用
(function(age) {
return age;
})(100);
function box() {
return function() {
return "Lee";
}
}
2. 闭包
function box () {
var age = 100;
return function () {
return age;
}
}
alert(box()()); //通过闭包访问局部变量。局部变量驻留在内存中。
3. 循环里的匿名函数的取值问题
function box() {
var arr = [];
for (var i=0; i<5; i++) {
arr[i] = function() {
return i; //匿名函数中的i都会是5, 通过匿名函数自我及时执行解决这个问题。
}
}
return arr;
}
function box() {
var arr = [];
for (var i=0; i<5; i++) {
arr[i] = (function(number) {
return number; 通过匿名函数及时自我执行解决这个问题。
})(i);
}
return arr;
}
function box() {
var arr = [];
for (var i=0; i<5; i++) {
arr[i] = (function(number) {
return function() {return number};
})(i);
}
return arr;
}
4. 闭包中使用this对象
闭包中的this对象指向window
var box = {
getThis: function () {
return function() {return this;} //这里的this指向window
}
}
var box = {
getThis: function () {
var that = this;
return function() {return that;} //先把this作用域保存给that变量,再使用that操作box作用域下的变量。
}
}
5. 内存泄漏
闭包应该避免内存泄漏
6. 模仿块级作用域
javascript没有块级作用域, if else, for不会产生块作用域
function box() {
(function () {
for (var i=0, i<5; i++){
}
})();
}
(function() {
var a,b,c; //防止变量名字冲突
})();
7. 私有变量
function Box(){
var age = 100;
var run = function () {
return age;
}
this.publicRun = function () { //私有变量无法访问,定义个公共接口访问
return age + run();
}
}
8. 模块模式
var box = function() {
var user = "Lee";
function run () {
return '"running..";
}
return {
publiGo: function () {
return user + run();
}
}
}
9. 增强的模块模式
function Desk() {
}
var box = function() {
var user = "Lee";
function run () {
return '"running..";
}
var desk = new Desk();
desk.publicGo = function () {
return user + run();
}
}
- 匿名函数和闭包
- 匿名函数和闭包
- 匿名函数和闭包
- 闭包和匿名函数
- 匿名函数和闭包
- 匿名函数和闭包
- 匿名函数和闭包
- 匿名函数和闭包
- 闭包和匿名函数
- 匿名函数和闭包
- 闭包函数 和 匿名lambda函数
- js 匿名函数和闭包函数
- js 闭包和匿名函数
- js 闭包和匿名函数
- js 闭包和匿名函数
- javascript:复习匿名函数和闭包
- javascript匿名函数和闭包
- js匿名函数和闭包
- Windows 10 右键为文件添加日期前缀
- VsCode快捷键
- 经典算法之图的深度优先搜索遍历
- Eclipse发布maven工程报错
- php截取富文本框中的前60个字符数
- 匿名函数和闭包
- neutron-server.service启动失败显示代理报错http://controller:9696/v2.0/agents.json
- ES集群节点宕机导致shard unassigned解决方案
- 搭建Gitlab安装步骤、中文汉化、卸载
- tomCat知识
- 使用FormData表单数据对象提交表单及上传图片
- AngularJs表单提交
- 微信小程序ajax请求
- c语言猜数字小游戏(搞怪版)