在javascript中未声明的IIFE?

时间:2017-06-23 19:40:52

标签: javascript jquery knockout.js

指出我在javascript中的历史经验非常有限,这一点非常重要。我正在寻找我在下面提供的代码示例中使用的概念背后的可能推理。 该应用程序使用MVC,JavaScript,jQuery,knockout.js和Kendo UI的组合。

第一段代码如下所示:

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));

此代码包含在.js文件的脚本部分中引用的.cshtml文件中。我迷失的是第一行,lx.vm =。通过这样做可以实现什么?我理解IIFE的概念,所以函数中包含的代码至少是可以理解的,但我不确定开始这个文件的前缀。是否只是将函数添加到全局范围,同时保持函数的所有成员都是私有的?或者还有其他事情发生在这里吗?

我的下一个问题与这段代码有关:

hc = new HCA();

return
{
    hc: hc
};

同样,没有var明确声明变量,我不理解别名HCA并返回别名的原因。为什么要对它进行别名而不仅仅是返回HCA?

我能找到的最贴切相关的答案就是:How do I namespace JavaScript code with or without IIFEs?

但是,csharpfolk的回答中并没有包含任何解释。

澄清:呈现的JavaScript成功执行。我正在寻找的是通过解释支持第一行代码以及代码中的第二个示例。

0 个答案:

没有答案