美文网首页
兼容各版本的闭包函数

兼容各版本的闭包函数

作者: 水墨小龙虾 | 来源:发表于2017-03-03 19:46 被阅读0次

通常一个自执行的闭包函数是这样的

(function(this,$){
...
}(window,jQuery))

等同于下面写法
!function(this,$){
...
}(window,jQuery)

兼容node环境 或者amd写法 和window写法
举一个小李子:

先定义一个circle.js,暴露两个公共函数给外部调用
!function(root,fn){
    if (typeof exports === 'object') {
        // Node.
        module.exports = fn.call(root);
    } else if (typeof define === 'function' && define.amd) {
        // 定义一个匿名模块
        define(function(){ return fn.call(root) });
    } else {
        // Browser globals (root is window)
        root.circle = fn.call(root);
    }
}(this,function(){
    var PI=Math.PI;
       //面积计算方法
    var area=function(r){
        return PI * r * r;
    }
       //周长计算方法
    var circumference = function (r) {
        return 2 * PI * r;
    };
    return {
        area:area,
        circumference:circumference
    }
})
app.js  调用circle中的方法
!function(root,fn){
    if (typeof exports === 'object') {
        module.exports = fn.call(root,require("./circle.js"));
    } else if (typeof define === 'function' && define.amd) {
        //定义一个circle模块加异步下载circle.js  加载完成执行回调
        define(["circle"],function(c){ return fn.call(root,c) });
    } else {
        root.circle = fn.call(root,circle);
    }
}(this,function(c){
    console.log(c.area(4))
})

写一个index.html 跑一下

这是node环境和window环境引用两个文件
<script src="circle.js"></script>
<script src="app.js"></script>

如果需要用require异步加载文件,只需要引入一个require.js源文件就可以
<script data-main="app.js" src="require.js"></script>

然后我们在控制台就看到打印的结果了50.26548245743669

相关文章

  • 兼容各版本的闭包函数

    通常一个自执行的闭包函数是这样的 兼容node环境 或者amd写法 和window写法举一个小李子: 写一个in...

  • 如何理解闭包?

    1、定义: 嵌套在函数作用域中的函数,称为闭包函数。该作用域称为闭包环境。通过闭包函数可以访问闭包函数所在函数作用...

  • 关于逃逸闭包

    逃逸闭包:当函数执行结束后,才去调用函数内部的闭包,叫做逃逸闭包非逃逸闭包当函数执行过程中,执行的函数内部的闭包,...

  • 3.逃逸闭包,非逃逸闭包

    逃逸闭包:当函数执行结束后,才去调用函数内部的闭包,叫做逃逸闭包非逃逸闭包:当函数执行过程中,执行的函数内部的闭包...

  • (9) python之闭包

    闭包闭包 = 函数 + 环境变量(函数定义的时候) 一个最简单的闭包 闭包不受外部变量影响 非闭包 闭包 闭包 只...

  • JS的闭包

    1.闭包的概念 闭包函数:声明在一个函数中的函数,叫做闭包函数。闭包:内部函数总是可以访问其所在的外部函数中声明的...

  • 面试题(day-2)

    1 ,什么是闭包?闭包有什么好处?使用闭包要注意什么? 闭包:函数嵌套函数,内部函数可以引用外部函数的参数和变量,...

  • python函数之闭包

    目录 python函数之闭包什么是闭包python中的namespace闭包的条件闭包的优点 python函数之闭...

  • 闭包和立即执行函数

    闭包闭包:内部的函数引用了外部的函数的变量,则产生闭包。闭包的作用:把变量封装在函数中,只有内部函数可以用,让函数...

  • day14-函数(3)装饰器

    一、闭包函数 闭包函数=函数嵌套定义+函数对象+名称空间与作用域 闭包函数 1、闭:指的是该函数是定义在一个函数内...

网友评论

      本文标题:兼容各版本的闭包函数

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