关于函数的Javascript问题 - IIFE

时间:2016-05-06 01:48:11

标签: javascript aem

我被要求提出另一个问题并将其链接到此主题。 How add mandatory dropdown field in Touch UI

我的问题是: 有人可以告诉我javascript函数的终点是什么。

})(document, Granite.$, Granite.author); 

是某种命名空间。

供我参考,我附上了Javascript代码。

(function (document, $, ns) {
    "use strict";

    $(document).on("click", ".cq-dialog-submit", function (e) {
        e.stopPropagation();
        e.preventDefault();

        var $form = $(this).closest("form.foundation-form"),
            title = $form.find("[name='authoringMode']").val(),
            message, clazz = "coral-Button ";

        if(!title){
            ns.ui.helpers.prompt({
            title: Granite.I18n.get("Invalid Input"),
            message: "Please Check Values",
                actions: [{
                    id: "CANCEL",
                    text: "CANCEL",
                    className: "coral-Button"
                }
            ],
            callback: function (actionId) {
                if (actionId === "CANCEL") {
                }
            }
        });
        }else{
                 $form.submit();
        }
    });
})(document, Granite.$, Granite.author);

3 个答案:

答案 0 :(得分:2)

这就是我们所谓的自我调用函数:

(function (document, $, ns) { ...
})(document, Granite.$, Granite.author);

和那些(“文档,花岗岩......等)是传递给同一个函数的参数。

答案 1 :(得分:1)

最后一行是将参数传递给IIFE(立即调用的函数表达式)。您可以了解更多here

答案 2 :(得分:0)

})(document, Granite.$, Granite.author);

将参数传递给函数,将document定义为document,将Granite.$定义为$,将Granite.author定义为函数表达式中的ns < / p>

(function (document, $, ns) {

如,

var obj = {
  $:jQuery,
  author:"abc"
};

(function(document, $, ns) { 
  "use strict";
  
  console.log($, ns)
 
}(document, obj.$, obj.author))
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>