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

(我不是问你在jQuery和其他中看到的$('p.foo')语法,而是像$name和$order这样的正常变量)


当前回答

在AngularJS的上下文中,$前缀只用于框架代码中的标识符。框架的用户被告知不要在自己的标识符中使用它:

Angular命名空间$和$$ 为了防止与你的代码发生意外的名称冲突,Angular会在公共对象的名称前加上$,在私有对象的名称前加上$$。请不要在代码中使用$或$$前缀。

来源:https://docs.angularjs.org/api

其他回答

虽然您可以简单地使用它作为标识符的前缀,但它应该用于生成的代码,例如模板中的替换令牌。

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对象。

有效的JavaScript标识符必须以字母开头, 下划线(_)或美元符号($); 后续字符也可以 是数字(0-9)。因为JavaScript是区分大小写的, 信 包括字母“A”到“Z”(大写)和 字母a到z(小写)。

细节: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Grammar_and_types#Variables

如果你看到美元符号($)或双美元符号($$),并想知道这在Prototype框架中意味着什么,下面是你的答案:

$$('div');
// -> all DIVs in the document.  Same as document.getElementsByTagName('div')!

$$('#contents');
// -> same as $('contents'), only it returns an array anyway (even though IDs must be unique within a document).

$$('li.faux');
// -> all LI elements with class 'faux'

来源: http://www.prototypejs.org/api/utility/dollar-dollar

Stevo是对的,美元脚本符号的含义和用法(在Javascript和jQuery平台中,但在PHP中不是)完全是语义上的。$是一个字符,可以用作标识符名称的一部分。此外,美元符号可能不是你在Javascript中遇到的最“奇怪”的东西。下面是一些有效标识符名称的例子:

var _       = function() { alert("hello from _"); }
var \u0024  = function() { alert("hello from $ defined as u0024"); }
var Ø       = function() { alert("hello from Ø"); }
var $$$$$   = function() { alert("hello from $$$$$"); }

以上所有的例子都可以。

试一试。