为什么JavaScript变量会以美元符号开头?

我经常看到带有以美元符号开头的变量的JavaScript。 何时/为什么要选择以这种方式为变量添加前缀?

(我没有问你在jQuery和其他人看到的$('p.foo')语法,而是像$name$order这样的普通变量)


jQuery中非常常见的用法是将存储在变量中的jQuery对象与其他变量区分开来。 例如,我会定义

var $email = $("#email"); // refers to the jQuery object representation of the dom object
var email_field = $("#email").get(0); // refers to the dom object itself

我发现这对编写jQuery代码非常有帮助,并且很容易看到具有不同属性集的jQuery对象。


在ECMAScript的第1版,第2版和第3版中,除了自动生成的代码的上下文之外,使用$ -prefixed变量名称已被该规范显式阻止:

美元符号( $ )和下划线( _ )在标识符的任何地方都是允许的。 美元符号仅用于机械生成的代码。

然而,在下一个版本(第5版,这是当前版本)中,这个限制被取消了,上面的文章被替换成了

美元符号( $ )和下划线( _ )在IdentifierName的任何位置都是允许的。

因此,$符号现在可以在变量名称中自由使用。 某些框架和图书馆在符号的含义上有自己的约定,在这里的其他答案中提到。


正如其他人所提到的,美元符号旨在被机械生成的代码所使用。 然而,该公约已被一些非常流行的JavaScript库打破。 JQuery,Prototype和MS AJAX(AKA Atlas)都在其标识符中使用此字符(或作为整个标识符)。

总之,您可以随时使用$ 。 (口译员不会抱怨。)问题是你想要什么时候使用它?

我个人不使用它,但我认为它的使用是有效的。 我认为MS AJAX使用它来表示一个函数是一个更详细的调用的别名。

例如:

var $get = function(id) { return document.getElementById(id); }

这似乎是一个合理的惯例。

链接地址: http://www.djcxy.com/p/2783.html

上一篇: Why would a JavaScript variable start with a dollar sign?

下一篇: JavaScript plus sign in front of function name