什么'这两个函数在JavaScript中的区别是什么

What's the difference between these two functions in JavaScript?

本文关键字:JavaScript 函数 是什么 区别 两个 什么      更新时间:2023-09-26

类型1:

var EXAMPLE = function() {};

类型2:

var EXAMPLE = function($) {
    return {};
}(jQuery);

我是JavaScript初学者,正在努力理解这两段代码之间的区别。在功能方面,当我尝试向EXAMPLE对象添加属性时,我没有看到区别。

这里有几个主要区别:

  1. 对于第一个,EXAMPLE的值最终成为一个函数对象。对于第二个,它最终是一个普通对象(而不是函数),因为在第二个中,函数被称为,并且您将其返回值({})存储在EXAMPLE中。

  2. 第二个依赖于您定义了一个jQuery符号(可能是在页面上包含jQuery的结果)。第一个没有。

所以他们很不一样。

第一种是创建函数的一种非常通用的方法(在本例中,是一个什么都不做的函数)。

第二种是在不依赖$全局的情况下使用jQuery的一种相当标准的方法(因为有时人们使用jQuery.noConflict()来释放$符号)。其思想是,由于jQuery作为$参数传递到函数中,因此中的函数代码可以使用$,即使没有$全局。人们通常会这样做,并返回一个带有函数的对象,比如:

jQuery.noConflict(); // Release $
display("typeof $ = " + typeof $);   // "undefined"
var EXAMPLE = function($) {
  return {
    red: function(selector) {
      // Note we can use $ here, even though $ isn't
      // defined globally
      $(selector).css("color", "red");
    },
    green: function(selector) {
      $(selector).css("color", "green");
    }
  };
}(jQuery);
setTimeout(function() {
  EXAMPLE.red("#target");
}, 700);
setTimeout(function() {
  EXAMPLE.green("#target");
}, 1400);
function display(msg) {
  jQuery("<p>").html(String(msg)).appendTo(document.body);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="target">I'm the target element</div>

此示例创建函数并将其分配给Example

var EXAMPLE = function() {};

此RUN函数和函数Example = {b: jQuery} 返回的赋值对象

var EXAMPLE = function($) {
    return {b: $};
}(jQuery);