JavaScript中美元符号$的用途是什么?

54

我是一名 JavaScript 学习者,一直在研究这个问题,但没有成功。除了正则表达式之外,JavaScript 中的 $ 符号有什么用途?欢迎提供任何相关资源或阅读材料。谢谢.


2
为什么JavaScript变量会以美元符号开头? - Ben Rowe
也许你会发现这个线程有帮助。https://dev59.com/k3RA5IYBdhLWcg3wvQhh - jjnguy
3个回答

61

这并没有什么特别的含义。

但因为在标识符名称中允许使用 $,所以很多JavaScript库开始将其用作与它们交互的“中心”接口,或者至少用作访问其功能的快捷方式。

例如,如果你正在使用jQuery并且输入 $("div"),这就是对带有参数 "div" 的 $ 函数的调用。当你说 $.post() 时,它会调用 $ 对象上的 post 方法(JavaScript中的函数是一等对象)。


13
美元符号实际上被包含在ECMA规范中,用于区分机器生成的代码和人类编写的代码。 - NM.
我最初也有这个问题。根据Javascript规范,$是一个有效的变量名...请参见MDN(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Grammar_and_Types)。因此,新手javascript开发人员无法理解$的原因是因为您从未看到$被分配为对象或函数。通常是基本对象,就像这个答案所描述的那样。即var $ = {}。如果您深入研究导入模块的源代码,最终会找到它。 - Dan Krueger

25

当我开始使用Prototype框架时,我在JavaScript中认识了它。在Prototype中,$只是一个经常使用的函数名称(非常简化——等同于document.getElementById的缩写)。就个人而言,我喜欢它的简洁性。

据我所知,在语言本身中并没有为任何内容使用它。

值得一提的是,道格拉斯·克罗克福德建议不要在变量/函数名称中使用$

不要在名称中使用$(美元符号)或 \(反斜杠)。


再引用一段相当主观的克罗克福德先生的话,摘自他的讲座《JavaScript的历史与未来》:

美元符号是专门为代码生成器和宏处理器添加的,因此如果您有机器编写代码,那么这些机器需要确信它们创建的变量不会与人类将要创建的变量冲突。为了区分它们,我们将允许机器使用美元符号。一些“忍者”发现了这一点,认为哦,美元符号,我可以将其用作函数名称,因此他们正在这样做。结果看起来很愚蠢。我的意思是,看看带有美元符号的程序。


1
那么 $("someId")document.getElementById("someId") 是一样的吗? - Babiker
这不仅仅是Prototype中的那个 - 还有更多。 - Lauri Lehtinen
5
取决于$是如何定义的(在ECMAScript中没有名为"$"的函数):function $ () { /* libraries do what they want */ } - user166390
@LauriLehtinen 那句话让我开心不已。 - Thomas

10

如果您想知道为什么一些变量和函数名以$开头,那么这只是在使用jQuery和/或AngularJS时的一个约定。

在使用jQuery的代码中,$通常用作包含jQuery选择器的变量的前缀。 例如: var $container = $('.container');

AngularJS中,他们使用$前缀表示“核心Angular功能”。 这样,您就可以知道哪些方法和服务是由框架添加的,哪些是您的应用程序自定义的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接