若jQuery的IIFE未执行,jQuery将如何工作?关于jquery-3.3.1.js的疑问
关于jQuery未执行IIFE的运行问题
兄弟你观察得太到位了!这个点确实戳中了jQuery核心运行机制的关键。
如果那个包裹所有jQuery代码的IIFE没有加上最后的()执行的话,jQuery完全没法正常工作,具体原因是这样的:
- 那个
(function(global, factory) { ... })本质上只是定义了一个匿名函数,没有执行的话,函数内部的所有代码(包括把jQuery挂载到全局的window.jQuery = window.$ = jQuery;)都不会被触发运行。 - 你哪怕把这个没执行IIFE的
jquery-3.3.1.js引入页面,全局作用域里也不会出现jQuery或者$这两个变量——因为负责把它们暴露到全局的代码根本没机会执行。 - 至于你想用
$('.selector')选择DOM、jQuery.ajax()发请求这类核心功能?完全调用不了,因为整个jQuery的核心对象都没被创建出来。
其实jQuery用IIFE的核心目的,就是把内部的所有逻辑封装在独立作用域里,避免污染全局空间,同时通过执行这个函数,把内部构建好的jQuery实例暴露到全局供开发者使用。要是没执行这个IIFE,这个JS文件就只是定义了一个没人调用的闲置函数,和没引入几乎没区别。
内容的提问来源于stack exchange,提问作者user9002947
相关产品推荐
相关产品推荐

