模式学习(二)

闭包的作用?匿名函数的作用?很多次面试会被问到:(function(){})()

1. 匿名函数的作用域只能在这个闭包里,但是同时又能访问到外面的变量;

2. 匿名函数里面,我们可以将全局变量当做参数传入,然后使用,相比隐式全局变量,更清晰,更快

var block = (function(){
        var my = {};
        my.name = "Nick";
        return my;
    })();

    var block = (function(my){
        my.add = [12,3,4];
        return my;
    })(block || {});

    console.log(block); // Object {name: "Nick", add: Array[3]}

 

 通常我们申明一个object,可以写 :

var block = block || {};// 这个时候 var 不能去掉 否则报错 ,因为block没有被提前申明,报错 block is not defined!

松耦合扩展:

var block = block || {};
    var block = (function(){
        yy=123;
        var my = {};
        my.name = "Nick";
        return my;
    })();

    var block = (function(my){
        my.add = [12,3,4];
        return my;
    })(block || {});

    var block = (function(my){
        my.addww = "xx";
        return my;
    })(block || {});

    console.log(block); // Object {name: "Nick", add: Array[3]}

    var block = (function(my){
        my.old = my.add;

        my.add = "ss";
        return my;
    })(block);
    console.log(block);

 

 

 

posted @ 2013-12-18 16:49  楚玉  阅读(135)  评论(0编辑  收藏  举报