我在看一个插件时,看到了源码结构如截图所示,我知道(function(){})()是一种立即执行函数,但是在截图中,最后的那个圆括号里又写了一个函数function($,ChineseDistricts){...},这个函数暂且称为“匿名函数1”,function (factory){...}暂且称为“”匿名函数2”,意思是不是:把匿名函数1传入到匿名函数2的参数factory中,然后检测当前环境。如果检测到了全局环境中存在exports对象,则证明是node环境,如果是node环境,则用factory(require('jquery'), require('ChineseDistricts'))这个方法来执行匿名函数1,因为Node是基于模块的,所以在Node中要使用这个插件的话,必须用require()方法把匿名函数2中需要的参数"$"和"ChineseDistricts"以模块的方式给引用进来?
不知道我理解的有没有错?请大神再给指点一下。
是的,不过和是不是node环境没有关系,只要运行环境实现了 es6 里面的模块机制就可以了,就是常见的兼容写法
http://www.css88.com/archives...