javascript中未声明的IIFE?
必须指出,我在javascript方面的历史经验非常有限。我正在寻找我在下面提供的代码示例中使用的概念背后可能的推理。 该应用程序使用MVC、JavaScript、jQuery、knockout.js和KendoUI的组合 第一段代码如下所示:javascript中未声明的IIFE?,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,必须指出,我在javascript方面的历史经验非常有限。我正在寻找我在下面提供的代码示例中使用的概念背后可能的推理。 该应用程序使用MVC、JavaScript、jQuery、knockout.js和KendoUI的组合 第一段代码如下所示: lx.vm = (function ($, ko, kendo, undefined) { "use strict"; var HCA = function () { var Compliance = {
lx.vm = (function ($, ko, kendo, undefined) {
"use strict";
var HCA = function () {
var Compliance = {
complianceId: ko.observable("DEN-AB")
};
debugComplianceId = function () {
return alert("debugComplianceId method has been called!");
};
ko.applyBindings(Compliance);
},
hc = new HCA();
return
{
hc: hc
};
}(jQuery, ko, kendo));
此代码包含在我的.cshtml
文件的脚本部分中引用的.js
文件中。我丢失的是第一行,lx.vm=
。这样做有什么好处?我理解IIFE的概念,因此函数中包含的代码至少是可以理解的,但我不确定该文件开头的前缀。是否只是将函数添加到全局范围,同时将函数的所有成员保持为私有?还是这里发生了什么事
我的下一个问题与这段代码有关:
hc = new HCA();
return
{
hc: hc
};
同样,没有显式声明变量的var
,我也不理解为HCA取别名并返回别名的原因。为什么要使用别名,而不只是返回HCA
对于我的问题,我能找到的最密切相关的答案如下:
然而,并没有一个解释来支持csharpfolk的答案
说明:显示的JavaScript执行成功。我想要的是确认,并辅以解释,确认第一行代码以及代码中的第二个示例所实现的功能。Hmm,事实上,这是一个很好的观点-所显示的代码实际上没有返回任何内容(
未定义的
)!抢手货哦,如果没有其他问题的话,我对你目前的工作状况表示同情。对这个问题的回答很可能是“作者是一位非常看重自己聪明的工程师”这句话。这些别名允许您导出重命名的函数,但在这里,似乎是盲目地应用了这种模式。