JavaScript中这段Candy自执行函数定义的含义是什么?
解析这段Candy模块的自执行函数代码
先看你贴的代码:
var Candy = (function(self, $) { return self; } (Candy || {}, jQuery));
这是JS里很常见的模块模式变种,拆解来看:
整体是立即执行函数表达式(IIFE)
定义完匿名函数后立刻调用,格式是(函数定义)(调用参数),目的是创建独立作用域,避免污染全局变量。函数调用的参数部分
Candy || {}:如果当前作用域已存在Candy变量,就复用它;如果没有(比如第一次加载这段代码),就新建一个空对象。这么做是为了不覆盖已有的Candy模块内容,支持增量扩展,就算这段代码重复执行也不会清空之前的Candy。jQuery:把全局的jQuery对象传入函数,在函数内部用$指代。这是为了避免全局的$被其他库篡改,同时缩短变量名方便代码压缩。
函数内部逻辑
函数接收self(对应传入的Candy或空对象)和$(对应jQuery)两个参数,最后直接返回self。所以最终Candy变量会被赋值为传入的对象——要么是已有的Candy,要么是新的空对象。这种写法的实际用途
你看到的是精简版,实际项目里通常会在函数内部给self添加属性或方法,比如:var Candy = (function(self, $) { self.doSomething = function() { // 用$操作DOM的逻辑 }; return self; } (Candy || {}, jQuery));这样就能逐步给Candy模块添加功能,同时保持代码模块化,还能安全和其他库共存。
内容的提问来源于stack exchange,提问作者Sir Isaac
相关产品推荐
相关产品推荐

