码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript 匿名函数和闭包

时间:2017-04-26 11:45:23      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:java   cal   call   变量   不同   垃圾   script   最大   getname   

// 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 匿名函数和闭包

标签:java   cal   call   变量   不同   垃圾   script   最大   getname   

原文地址:http://www.cnblogs.com/pumushan/p/6767491.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!