【问题标题】:jQuery difference between argument and parameter参数和参数之间的jQuery区别
【发布时间】:2013-01-04 09:36:45
【问题描述】:

我有如下的jQuery代码块;

(function($){
  //Normal code goes here
})(jQuery);

现在我想明白了

  1. 如果这是一个自执行函数?如果是,为什么?
  2. 传递给函数的“$”和最后指定的“jQuery”有什么区别?其中一个称为参数,另一个称为参数吗?
  3. 是否需要在末尾指定“jQuery”。

谢谢。

【问题讨论】:

    标签: javascript jquery javascript-framework


    【解决方案1】:

    如果这是一个自执行函数?如果是,为什么?

    是和不是。它是一个Immediately-Invoked Function Expression,但有些人倾向于称这些为“自执行”,即使这通常与递归的概念相关。

    传递给函数的“$”和最后指定的“jQuery”有什么区别?其中一个是参数,另一个是参数吗?

    没错。

    是否需要在末尾指定“jQuery”。

    否则会从哪里填充$ 参数?


    我再补充一个你似乎错过的问题:

    为什么要使用立即调用函数表达式?

    它只是在 IIFE 范围内将jQuery 别名为$,因此您可以安全地使用$,而不管jQuery 是否处于noConflict 模式。对于开发插件和使用 WP 非常有用。

    【讨论】:

    • "否则 $ 参数将从哪里填充?"。虽然我同意 $jquery 之间的区别在于参数和参数之间的区别,但我会调用 $ 参数和 jquery 参数。
    • @Bruno 我的错,刚起床。你是对的 - jQuery 输入函数作为形式参数。
    【解决方案2】:

    1) 自动执行和立即执行

    你可以知道,因为它的末尾有括号。

    你写一个这样的函数:

    function myFunc () {}
    

    或喜欢

    var myFunc = function () {};
    

    然后你调用这样的函数:

    myFunc();
    

    你把它写成(function () {})();,所以它一到结尾就会触发。

    2) 参数是函数所期望的。 参数就是你赋予函数的东西。

    var number_arg = 35,
        string_arg = "Bob";
    
    function myFunc (number_param, string_param) {
        console.log(number_param, string_param);
    }
    
    myFunc(number_arg, string_arg); // 35 "Bob";
    

    参数可以与参数命名不同的事实意味着您可以在函数内部以不同的方式“别名”值。

    function myFunc ($) { console.log($); }
    
    myFunc("SUPERLONGSTRINGOFDOOMISWHATI'MPUTTINGINHERE");
    
    myFunc(MYAPP.Module.sub_module.plug_in);
    

    同时,在函数内部,所有这些东西都可以使用,只需使用$

    3) “别名”是 jQuery$ 发生的情况。

    【讨论】:

      【解决方案3】:

      是的,它是“自我执行”。内部是一个“函数表达式”,(必要的)参数(jQuery) 会导致它立即被调用,因此更常用的术语是“立即调用的函数表达式”。

      变量$ 在函数范围内是局部的。 jQuery 插件通常以这种方式编写,因此即使 jQuery 处于“无冲突”模式,也可以在内部使用常见的 $ 缩写,因为(全局)$ 变量正在被其他东西使用。

      声明中的变量正式称为“参数”,调用中的变量称为“参数”。我认为在 JS 中会出现歧义,因为您可以使用 arguments 伪数组访问提供的参数。

      【讨论】:

        猜你喜欢
        • 2011-03-11
        • 1970-01-01
        • 2012-09-24
        • 1970-01-01
        • 1970-01-01
        • 2015-07-18
        • 2020-12-30
        • 1970-01-01
        相关资源
        最近更新 更多