JavaScript 匿名函数和闭包
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript 匿名函数和闭包相关的知识,希望对你有一定的参考价值。
// 1 匿名函数的定义与使用 // 1.1 把匿名函数赋值给变量 通过变量执行 var box = function() { return "Lee"; } box(); // "Lee" // 1.2 通过自我执行来执行匿名函数 // (匿名函数)(); (function() { return "Lee"; })(); // "Lee" // 1.3 匿名函数自我传参 (function(age) { return age; })(100); // 100 // 2 闭包 // 2.1 闭包函数 function box() { return function() { return 10; } } box(); // 见下 /* function (){ return 10; } */ box()(); // 10 // 2.2 通过闭包返回局部变量 function box() { var age = 100; return function() { return age; }; } box(); // 见下 /* function (){ return age; } */ box()(); // 100 // 2.3 使用匿名函数实现局部变量驻留内存中从而累加 function box() { var age = 100; return function() { age++; return age; } } var b = box(); b(); // 101 b(); // 102 b(); // 103 // 销毁引用 等待垃圾收集器来清理 b = null; // 2.4 关于闭包的this对象 // window是js里最大的全局对象 // this在不同的作用域所指对象不同但指向的都是对象本身 // this指window对象 this; // Window {...} this.name = "window"; var box = { name: "box", getName: function() { return function() { // 闭包函数内 this指window对象 return this.name; } } } box.getName()(); // "window" // 对象冒充 box.getName().call(box) // "box" var box = { name: "box", getName: function() { // 闭包函数外 this指box对象 var that = this; return function() { return that.name; } } } box.getName()(); // "box"
以上是关于JavaScript 匿名函数和闭包的主要内容,如果未能解决你的问题,请参考以下文章