2009-07-19 220 views
116

在以下JavaScript代码中有一个美元符号$。这是什么意思?

$(window).bind('load', function() { 
    $('img.protect').protectImage(); 
}); 
+0

参见:HTTP:// stackoverflow.com/a/553734/43615(为什么JavaScript变量会以美元符号开头?) – 2016-02-01 16:35:53

回答

238

您的代码片段看起来像是从流行的JavaScript库(jQuery,ProtoType,mooTools等)中引用方法。

在JavaScript中使用$没有什么神秘的。 $只是一个有效的JavaScript标识符。

JavaScript允许使用大写和小写字母,数字和$_$旨在用于机器生成的变量(如$0001)。

原型,jQuery和大多数JavaScript库使用$作为主要基础对象(或函数)。他们中的大多数人也有办法放弃$,以便它可以与使用它的其他库一起使用。在这种情况下,您使用jQuery而不是$。实际上,$只是jQuery的快捷方式。

+12

这比接受的答案好得多。 +1 – 2009-07-19 17:49:49

34

这很可能是jQuery代码(更准确地说,使用jQuery库的JavaScript)。

$代表jQuery Function,实际上是jQuery的简写别名。 (与大多数语言不同,$符号未被保留,并且可以用作变量名称)。它通常用作选择器(即返回在DOM中找到的一组元素的函数)。

+6

它的原型 – 2009-07-19 17:30:55

+3

您应该添加$就像x,它可以是您分配的任何东西 – hasen 2009-07-19 17:36:49

+0

这段代码是什么意思:$ input.prop('type')=='radio'; – OKGimmeMoney 2014-08-15 18:21:09

29

another answer

一个小历史

记住,没有什么本质上的特别之处 '$'。这是一个变量名称,就像任何其他名称一样。在早些时候,人们习惯使用document.getElementById编写代码。由于JavaScript区分大小写,因此在编写document.getElementById时出错是正常的。我应该资本''的'B'吗?我是否应该注册Id的“我”?你得到了漂移。由于功能是在JavaScript中的一等公民,你总是可以做到这一点

var $ = document.getElementById; //freedom from document.getElementById! 

[编辑:看起来在Firefox 3和谷歌Chrome,you can't make alias so easily。在IE6和Firefox2,上述技术仍然有效。]

当Prototype库到达时,他们命名了他们的功能,它得到的DOM元素,如“$”,以节省打字/可读性[当写JS代码,大部分你首先选择一些DOM元素]。几乎所有的JavaScript库都复制了这个想法。 Prototype还引入了$$函数来选择使用CSS选择器的元素。

jQuery不仅调整了'$ function',而且扩展了它以接受所有'选择器'来获得你想要的元素。现在,如果你已经在你的项目中使用了Prototype并且想要包含jQuery,那么你会遇到问题,因为'$'可能指向Prototype的实现或者jQuery的实现。这就是为什么jQuery有noConflict选项的原因,以便您可以在使用Prototype的项目中包含jQuery,并慢慢迁移您的代码。我认为这对约翰来说是一个很棒的举动! :)

1

从jQuery的文档描述jQuery Core Object

许多开发商在它前面加上$来的包含为了帮助区分jQuery的 对象的变量名。这种做法没有什么神奇之处 - 它只是帮助一些人跟踪变量所包含的不同之处。

5

正如所有其他答案所说;它几乎可以是任何东西,但通常是“JQuery”。

但是,在ES6中,它是一个字符串插值运算符,例如template "literal"

var s = "new" ; // you can put whatever you think appropriate here. 
var s2 = `There are so many ${s} ideas these days !!` ; //back-ticks not quotes 
console.log(s2) ; 

结果:

有很多新的想法,这些天!

1

除了上面的回答,$在javascript中没有特别的含义,它可以自由地用于对象命名。在jQuery中,它被简单地用作jQuery对象和jQuery()函数的别名。 但是,您可能会遇到需要将其与另一个使用$的JS库结合使用的情况,这会导致命名冲突。因为这个原因,JQuery中有一个方法,jQuery.noConflict()

这里是的jQuery文档的一个样本:

<script src="other_lib.js"></script> 
<script src="jquery.js"></script> 
<script> 
$.noConflict(); 
// Code that uses other library's $ can follow here. 
</script> 

另外,您也可以使用这样

(function ($) { 
// Code in which we know exactly what the meaning of $ is 
} (jQuery)); 

Refhttps://api.jquery.com/jquery.noconflict/