我是Javascript的新手,想要熟悉最佳实践。
今天我遇到了一个新的构造,我需要社区帮助理解。代码依赖于Jquery。构造如下。
$(function() {
var data = {
//
};
var cont = {
//
init: function(){
}
};
var view = {
//
};
cont.init();
}());
我对此的理解是将IIFE传递到JQuery名称空间。
令我困惑的是,代码只包含3个文字而且没有return语句。你看我从模块模式的角度来看这个。在这种情况下,IIFE中使用的模块将返回包含任何预期公共函数的对象文字。
此代码不返回对象。实际上,只是将3个对象文字(data,cont,view)添加到JQuery名称空间中?然而,我的另一部分认为这只会将undefined
返回到JQuery名称空间。请指教。
答案 0 :(得分:0)
我对此的理解是将IIFE传递到JQuery名称空间。
没有
IIFE执行并返回undefined
(因为它没有返回语句)。
$
并将undefined
传递给它。然后丢弃$
的返回值,因为代码对它没有任何作用。
此处对$
的调用毫无意义。所有有趣的东西都发生在IIFE内部(当cont.init()
被调用时)。
答案 1 :(得分:-2)
<强>更新强>
请忽略我的回答。我对代码的理解是错误的。
您的代码没有意义,我认为它不会执行任何操作。它不是IIFE。以下是Immediately-Invoked Function Expression的更多信息。 IIFE与jQuery无关。它是一种定义函数的Javascript方法,也可以立即运行。
如果您这样做,那么它就是IIFE,它会立即显示警报。这不需要jQuery。
(function() {
var cont = {
init: function () {
alert('test');
}
};
cont.init();
})();
这段代码的作用是定义一个具有cont
对象的匿名函数。在cont
内,它定义了一个init
对象,该对象被设置为另一个匿名函数。通过执行cont.init()
,您将调用init
具有的功能。
关闭---即你的主要功能周围的(
和)
- 定义它。之后的()
会调用该函数。