协慌网

登录 贡献 社区

为什么 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 中的任何位置都允许使用美元符号( $ )和下划线( _ )。

因此,$ sign 现在可以在变量名中自由使用。某些框架和库对符号的含义有自己的约定,这里有其他答案。

正如其他人所提到的,美元符号旨在由机械生成的代码使用。但是,一些非常流行的 JavaScript 库打破了这种惯例。 JQuery,Prototype 和 MS AJAX(AKA Atlas)都在其标识符中使用此字符(或作为整个标识符)。

简而言之,您可以随时使用$ 。 (翻译不会抱怨。)问题是你什么时候使用它?

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

例如:

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

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