Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.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_Function_Scope_Expression - Fatal编程技术网

Javascript 在一个脚本文件中使用多个IIFE

Javascript 在一个脚本文件中使用多个IIFE,javascript,jquery,function,scope,expression,Javascript,Jquery,Function,Scope,Expression,我目前正在处理一个脚本文件,其中原始作者将多个IIFE封装在一个脚本文件中。后代IIFE是为特定用例编写的。例如,可能有一个用于搜索功能,另一个用于导航栏等: (function($) { (function() { var $search = $(".search"); $search.on("focus", function() { // Do something }); }()); (function() { var $nav

我目前正在处理一个脚本文件,其中原始作者将多个IIFE封装在一个脚本文件中。后代IIFE是为特定用例编写的。例如,可能有一个用于搜索功能,另一个用于导航栏等:

(function($) {
  (function() {
    var $search = $(".search");

    $search.on("focus", function() {
      // Do something
    });
  }());

  (function() {
    var $nav     = $(".nav"),
        $navLink = $(".nav__link");

    $navLink.on("click", function() {
      // Do something
    });
  }());

  // More IIFEs
}(jQuery));

这样做有什么好处吗?总的来说,为每个动作创建iife是多余的吗?

开发人员所做的纯粹是风格方法。他将UI初始化的不同部分划分为所有需要执行的函数。要了解开发人员为何以这种方式将它们分开,而不是为每个方法命名并在此上下文中执行该方法的更多信息,您必须询问开发人员自己。

您必须找到一个平衡点,但有时您希望在IIFE中封装一小部分代码,以明确变量在其他地方没有使用(如果有另一个代码同名,请确保没有冲突)。当然,每次大约500 LOC代码可以用300 LOC编写而不损失可读性,这意味着某些选择可能很差……好处是您有一个(某种程度上)模块化方法,但为了将HTTP请求保持在最低限度,需要一个连接文件。也就是说,我希望这是一个输出文件,而不是在开发代码中找到的文件。