Javascript设计模式之匿名函数与闭包-阿里云开发者社区

开发者社区> 开发与运维> 正文

Javascript设计模式之匿名函数与闭包

简介:

匿名函数

(function () {
    var foo = 10;
    var bar = 2;
    console.log(foo*bar);
})(); // 20

带参数的匿名函数

(function (foo,bar) {
    console.log(foo*bar);
})(10,2); // 20


var baz = (function (foo,bar) {
    return foo * bar;
})(10,2);
console.log(baz); // 20

闭包,closure 闭包,闭包就是能够读取其他函数内部变量的函数

var baz;
(function () {
    var foo = 10;
    var bar = 2;
    baz = function () {
        return foo * bar;
    }
})();

console.log(baz()); // 20

闭包代码块

能理解下面的几个代码块,就算能理解闭包了。闭包可以读取其他函数内部变量。var that = this;就是精髓。

// 代码块一

var name = "The Window";
var object = {
    name : "My Object",
    getNameFunc : function(){
        return function(){
            return this.name; // this是匿名函数
        };
    }
};
console.log(object.getNameFunc()()); // undefined
console.log(object.getNameFunc().call(object)); // My Object

// 代码块二
var name = "The Window";
var object = {
    name : "My Object",
    getNameFunc : function(){
        var that = this;
        return function(){ // 闭包
            return that.name;
        };
    }
};
console.log(object.getNameFunc()()); // My Object

// 代码块三
var name = "The Window";
var object = {
    name : "My Object",
    getNameFunc : function(){
        return function(){
            return name;
        };
    }
};
console.log(object.getNameFunc()()); // The Window


// 代码块四
var name = "The Window";
var object = {
    name : "My Object",
    getNameFunc : function(){
        return this.name; // this是object
    }
};
console.log(object.getNameFunc()); // My Object

方法论总结:可以针对关键点,进行深入探讨。百度搜索相关的博文或百科探索。



本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/6197068.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章