JavaScript中“ $”符号的含义是什么


Answers:


284

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

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

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

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


2
@Paolo:不确定确切的意思。(我想我以前是接受的。)好吧,我认为我的观点至少是正确的。这包括一些辅助信息,但是我不确定它是否可以证明“足够”……
Noldorin

1
@诺多林:辅助信息是一件好事。您的问题完全没有提到$的使用原因,可以使用$的原因,以及jQuery只是许多使用它的库之一。将其作为接受的答案意味着它是一个问题的最佳答案,但事实并非如此。
Paolo Bergantino,2009年

+1首先是有效的JavaScript标识符,其次通常被JavaScript框架用作别名。
浓汤

@Paolo:通常是的。但是,没有迹象表明OP希望了解此事。直接回答也是一件好事。:)话虽如此,我仍然同意这是一个更好的答案。我唯一的疑问是您对特定点的强调。
Noldorin

2
顺便说一句,我在这里提供的背后在我的岗位$函数一点点的历史:stackoverflow.com/questions/1122690/jquery-and-questions/...
SolutionYogi

44

另一个答案

一点历史

请记住,并没有什么本质上的特殊之处$。就像其他变量一样,它是一个变量名。在早期,人们曾经使用document.getElementById编写代码。由于JavaScript区分大小写,因此在编写时犯错误是正常的document.getElementById。我应该资本'b''by'?我应该资本'i'Id?你得到的漂移。由于函数是JavaScript中的一等公民,因此您始终可以执行以下操作:

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

当原型库到达时,他们将其命名为函数,该函数获取DOM元素,如'$'。几乎所有的JavaScript库都复制了这个想法。原型还引入了$$使用CSS选择器选择元素的功能。

jQuery还改编了$功能,但对其进行了扩展,使其可以接受各种“选择器”来获取所需的元素。现在,如果您已经在项目中使用Prototype并希望包含jQuery,则可能会遇到麻烦,因为'$'它们可能引用Prototype的实现或jQuery的实现。这就是为什么jQuery具有noConflict选项的原因,因此您可以在使用Prototype的项目中包含jQuery并缓慢迁移代码。我认为这对约翰而言是一个绝妙的举动!:)


10
var $ = document.getElementById;在Firefox或Google Chrome中不起作用。您应该function $(id) { return document.getElementById(id); }改用。有关更多信息,请参见stackoverflow.com/questions/1007340
Grant Wagner,2009年

我不知道,谢谢格兰特。我可以确认该方法曾经在IE6和Firefox 2中都能使用,因为我经常使用此技术。我将更新我的主要帖子。
解决方案

42

那是最有可能的jQuery代码(更确切地说是使用jQuery库的JavaScript)。

$代表jQuery的功能,实际上是一个速记别名jQuery。(与大多数语言不同,该$符号不是保留的,可以用作变量名。)它通常用作选择器(即返回在DOM中找到的一组元素的函数)。


3
您应该添加$就像x,它可以是您为其分配的任何内容
hasen

这段代码是什么意思:$ input.prop('type')=='radio';
OKGimmeMoney 2014年

21

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

但是,在ES6中,它是模板“文字”(例如)中的字符串插值运算符。

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) ;

结果:

这些天有很多新想法!


2
这是一个有用的答案!因为我知道我们没有jQuery或任何其他库,所以我一直在寻找它。它基本上是打印较大的字符串中的变量,而不使用引号和加标志等的方式
奥斯卡布拉沃


4

除了以上答案外,$在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));

参考https : //api.jquery.com/jquery.noconflict/


3

从描述jQuery Core Object的jQuery文档中:

许多开发人员在包含jQuery对象的变量名称前添加$,以帮助区分。这种做法没有什么神奇之处–它只是帮助某些人跟踪不同变量包含的内容。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.