美文网首页前端待看
匿名函数和模块化

匿名函数和模块化

作者: GTReload | 来源:发表于2016-10-18 21:45 被阅读91次

匿名函数

function outputNum() {
    for (var i = 0; i < 5; i++) {
        
    }
    alert(i);//5
}
或
function outputNum() {
    for (var i = 0; i < 5; i++) {
        
    }
    var i;
    alert(i);//5
}

在js中,变量在它定义处开始,就可以在函数内部随处访问它,即使重新申明,值也不会改变。

匿名函数可以用来模仿块级作用域避免这问题

//匿名函数申明
(function () {
    //这里是块级作用域
})();

下面这种写法报错

function outputNum(count) {
    (function () {
        for (var i = 0; i < 5; i++) {
        
        }
    })();
    alert(i);//报错
}

所以,匿名函数一般用在全局作用域中的函数外部,限制向全局作用域中添加过多的变量或函数,从而产生命名冲突污染。

那匿名函数和模块化有什么联系呢?

模块化

模块化定义:如果创建一个对象并以某些数据进行初始化,同时还要公开一些能够访问这些私有数据的方法,就可称为模块化,就像C++/java中的类。

下面展示模块化的几种写法:

  • 匿名函数写法:
var Module = (function () {
    var count = "abc";
    var m1 = function () {
        count = count + "m1";
        console.log(count);
    };
    var m2 = function () {
        count = count + "m2";
        console.log(count);
    };
    return {
        count: count,
        m1: m1,
        m2: m2
    };
})();
  • 增强模式
    为Module新增m3方法,并返回新的Module对象,这种做法当该对象很大且散落有用。
var Module = (function (mod) {
    mod.m3 = function () {
        mod.count = mod.count + "m3";
        console.log(mod.count);
    };
    return mod;
})(Module);
  • 宽增强模式
    当在错综的网路环境中,无法确定哪个先加载,就会导致空对象,这时宽增强模式产生。
var Module = (function (mod) {
    mod.m3 = function () {
        mod.count = mod.count + "m3";
        console.log(mod.count);
    };
    return mod;
})(window.Module || {});
  • 输入全局模式
    模块有时是不可能独立存在的,这时需要传入全局变量;另外一种是简化对象操作,例,jQuery传入window,当使用window方法时,无需在输入window.了。
var Module = (function ($,window) {
    
})(jQuery,window);

相关文章

  • 匿名函数和模块化

    匿名函数 在js中,变量在它定义处开始,就可以在函数内部随处访问它,即使重新申明,值也不会改变。 匿名函数可以用来...

  • Python匿名函数

    Python匿名函数 优点:减少代码的重复性、模块化代码

  • 总结Day10_函数提升

    ****函数**** ===匿名函数=== 1.什么是匿名函数   匿名函数还是函数,只是声明的格式和普通函数不一...

  • Day10-匿名函数&变量的作用域&函数递归&迭代器&生成器

    匿名函数 1.匿名函数 匿名函数就是没有函数名的函数; 匿名函数可以看成是类型是function的值和10, 'a...

  • Day10 函数

    一.匿名函数 1.匿名函数 匿名函数就是没有函数名的函数; 匿名函数可以看成是类型是function的值和10, ...

  • js闭包的使用场景

    1.模块化代码 var abc = (function(){ //abc为外部匿名函数的返回值var a = 1;...

  • python函数(初级)

    函数 1.匿名函数 """匿名函数就是没有函数名的函数:匿名函数可以看成是类型是function的值,和10,'a...

  • 10 函数(2)-匿名函数

    ====== 匿名函数 ====== 1.什么是匿名函数 匿名函数还是函数,只是声明的格式和普通函数不一样(只适用...

  • js 深入

    * js语法* js的动态函数和匿名函数* js动态函数Functionnew Function();* 匿名函数...

  • day-10总结

    匿名函数 1.什么是匿名函数匿名函数还是函数,只是申明的格式和普通函数不一样。只适用于功能比较简单的函数 2.匿名...

网友评论

    本文标题:匿名函数和模块化

    本文链接:https://www.haomeiwen.com/subject/jzvtuttx.html