js这种匿名函数的用法是什么作用?

我在看一个插件时,看到了源码结构如截图所示,我知道(function(){})()是一种立即执行函数,但是在截图中,最后的那个圆括号里又写了一个函数function($,ChineseDistricts){...},这个函数暂且称为“匿名函数1”,function (factory){...}暂且称为“”匿名函数2”,意思是不是:把匿名函数1传入到匿名函数2的参数factory中,然后检测当前环境。如果检测到了全局环境中存在exports对象,则证明是node环境,如果是node环境,则用factory(require('jquery'), require('ChineseDistricts'))这个方法来执行匿名函数1,因为Node是基于模块的,所以在Node中要使用这个插件的话,必须用require()方法把匿名函数2中需要的参数"$"和"ChineseDistricts"以模块的方式给引用进来?

不知道我理解的有没有错?请大神再给指点一下。

clipboard.png

阅读 3.4k
2 个回答

是的,不过和是不是node环境没有关系,只要运行环境实现了 es6 里面的模块机制就可以了,就是常见的兼容写法

http://www.css88.com/archives...

基本上是对的,不过exports检测并不一定只是node环境,可能是其他的commonJS的规范环境,当然这是包含了node环境的。
简单来说就是检测运行环境,然后根据其环境加载自身引用和注册自身方法。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题