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

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


当前回答

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 $$$$$"); }

以上所有的例子都可以。

试一试。

其他回答

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 $$$$$"); }

以上所有的例子都可以。

试一试。

$字符对于JavaScript引擎没有特殊意义。它只是变量名中的另一个有效字符,如a-z, a-z, _, 0-9等…

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

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

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

${varname}只是jQuery开发人员用来区分包含jQuery元素的变量的命名约定。

Plain {varname}用于存储一般内容,如文本和字符串。 ${varname}保存从jQuery返回的元素。

你也可以使用plain {varname}来存储jQuery元素,但正如我在开始时所说的,这将它与普通变量区别开来,使其更容易理解(想象一下将其混淆为普通变量并搜索以了解它所包含的内容)。

例如:

var $blah = $(this).parents('.blahblah');

这里,blah存储返回的jQuery元素。

因此,当其他人在代码中看到$blah时,他们会明白这不仅仅是一个字符串或数字,而是一个jQuery元素。

Angular将is用于框架生成的属性。我猜,他们是根据ECMA-262 3.0提供的提示(现在已经失效了)。