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

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


当前回答

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

其他回答

$用于区分普通变量和jquery变量。 让你在FLIPKART下订单,然后如果订单是一个变量,显示你的字符串输出,然后它被命名为简单的“order”,但如果我们点击place order,然后返回一个对象,该对象将用$表示为“$order”,以便程序员可以在整个代码中剪掉javascript变量和jquery变量。

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

以上所有的例子都可以。

试一试。

在ECMAScript的第1版、第2版和第3版中,规范明确禁止使用$前缀的变量名,除非是在自动生成代码的上下文中:

美元符号($)和下划线(_)允许出现在标识符中的任何位置。美元符号仅用于机械生成的代码。

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

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

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

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

正如我在过去4年的经验,它将允许一些人很容易地识别变量是否指向值/对象或jQuery包装的DOM元素

前任: var name = 'jQuery'; var lib = {name:'jQuery',version:1.6}; var $dataDiv = $('#myDataDiv');

在上面的例子中,当我看到变量“$dataDiv”,我可以很容易地说,这个变量指向一个jQuery包装DOM元素(在这种情况下,它是div)。我也可以调用所有的jQuery方法,而不是包装对象再次像$dataDiv.append(), $dataDiv.html(), $dataDiv.find()而不是$($dataDiv).append()。

希望能有所帮助。 所以最后想说的是,这将是一个很好的实践,但不是强制性的。