Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中未声明的IIFE?_Javascript_Jquery_Knockout.js - Fatal编程技术网

javascript中未声明的IIFE?

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 = {

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

第一段代码如下所示:

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,事实上,这是一个很好的观点-所显示的代码实际上没有返回任何内容(
未定义的
)!抢手货哦,如果没有其他问题的话,我对你目前的工作状况表示同情。对这个问题的回答很可能是“作者是一位非常看重自己聪明的工程师”这句话。这些别名允许您导出重命名的函数,但在这里,似乎是盲目地应用了这种模式。