Javascript (函数($){})(jQuery)的含义(例如,在jQuery启蒙书中)

Javascript (函数($){})(jQuery)的含义(例如,在jQuery启蒙书中),javascript,jquery,Javascript,Jquery,我喜欢《DOM启蒙》这本书,我想读一读它的配套书 我以前使用过基本jquery,如下所示,我理解它们 $(document).bind(‘contextmenu’, function() { // do something }); 但书中提到了如下内容。。。我不明白这是怎么用的 (function($){ // Use $ alias worry-free of conflicts alert('You are using jQuery ' + $().jquery ); })(jQu

我喜欢《DOM启蒙》这本书,我想读一读它的配套书

我以前使用过基本jquery,如下所示,我理解它们

$(document).bind(‘contextmenu’, function() {
    // do something
});
但书中提到了如下内容。。。我不明白这是怎么用的

(function($){
// Use $ alias worry-free of conflicts
alert('You are using jQuery ' + $().jquery );
})(jQuery)
console=$(“#console”);
console.append(“在执行开始时,$==jQuery吗?”+(($==jQuery)?“是”:“否”)+“

”; $=函数(){}; console.append(“重新分配后,$==jQuery吗?”+(($==jQuery)?“是”:“否”)+”

”; (函数($){ console.append(“在我们的IFFE中,$==jQuery吗?”+(($==jQuery)?“是”:“否”)+“

”; })(jQuery)
这称为即时函数调用,是本机JavaScript

(
 // 1. define an anonymous function
 function(parameter1, parameter2) {
  // 2. this function is now an object
 }
)(argument1, argument2); // 3. invoke it with ()
在JavaScript中,匿名函数(没有任何名称的函数)可以存在,并立即调用这些函数

(function($){
    // Use $ alias worry-free of conflicts
    alert('You are using jQuery ' + $().jquery );
})(jQuery)
这是一个立即调用的匿名函数。将“$”传递给此函数,并在调用“jQuery”时写入。这只是为了说明,“$”表示“jQuery”。你也可以使用

(function(){
    // Use $ alias worry-free of conflicts
    alert('You are using jQuery ' + $().jquery );
})()
它会很好用的

$().jquery用于获取我们正在使用的jquery的版本


当我们希望在每次加载页面时无条件运行特定代码时,可以使用这些匿名函数。

通常我们需要在某个地方调用函数,以便执行其中的代码。 但立即调用的函数是不同的。 这意味着您无需在任何地方调用此函数即可执行它。
它将在其on.Adding()上执行;Derek:不,不是这样。如果node.js与node.js无关,为什么你会有一个标记node.js?对不起,这已经纠正了。你是说javascript中的
,而不是jquery中的
不是吗?实际上有人反对将这些称为“自调用函数”;它可以归结为“不,它们不是自动调用的……”@TML:还有一个很好的理由反对给它起一个像IIFE这样的神奇名字。我回答了一个问题,如果IIFE不是javascript中所有函数的属性,那么IIFE将范围隐藏误解为一个神奇的属性。@slebetman很公平,但我认为避免为它们指定特定名称的想法可能是一艘已经航行过的船;我在“让我们至少用一个能准确代表正在发生的事情的名字”的边界上缩减了这一论点:)虽然我欣赏每个人的反应,我相信有些人比其他人更准确,但就我有限的知识而言,这个答案最能引起共鸣。非常感谢。这不仅仅是为了以防万一,很多流行的库,有些比jQuery更老,都使用
$
。一个非常常见的例子是prototype.js.Yeah,“以防万一”的意思是有点开玩笑;老实说,他们都不应该使用它,因为“美元符号[原本]只打算用于机械生成的代码”,当时大多数库都在构建中。这个限制后来从规范中删除了,但当时确实存在。Prototype.js最初设计用于Rails自动生成的代码(与ASP自动到处注入javascript的方式相同)。所以从技术上讲,它是用于机械生成的代码。人们开始手动使用prototype.js是因为Web2.0的出现,它引领了人们对javascript编程的无所畏惧。