模式学习(二)

闭包的作用?匿名函数的作用?很多次面试会被问到:(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);
原文地址:https://www.cnblogs.com/chuyu/p/3480653.html