我经常看到带有以美元符号开头的变量的 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); }
这似乎是一个合理的惯例。