为什么我看到的JavaScript变量前缀是$?

13

这是一种元问题。在Stack Overflow上,我看到很多JavaScript片段的命名都以美元符号前缀开头(例如,在问题中所示的代码片段中第二行的$id)。我并不是在说jQuery或其他库。我知道这是有效的,但是当不必要时,这样做似乎很别扭。为什么人们会这样命名他们的变量?这只是熟悉服务器端语言(如PHP)在他们的JavaScript代码中的延续吗?

我认为可能是为了将一个变量标识为jQuery对象,例如当您保存选择结果以便以后消除重复选择时,但我没有看到任何一致的惯例。

3个回答

19

从语法上讲,美元符号本身并没有任何意义——对解释器来说,它只是另一个字符,就像_q一样。但使用jQuery和其他类似框架的许多人会在包含jQuery对象的变量前缀添加$,以便轻松识别,从而不会与整数或字符串之类的混淆。您也可以采用相同的约定,通过在这些变量前缀添加jq_,达到相同的效果。

实际上,这是一种简单粗糙的匈牙利命名法


实际上,它是一种粗糙的匈牙利标记法。幸运的是,我并没有看到太多像 var strHippo = "hippo"; 这样书写的 JavaScript 代码。 - Jonathon Faust

4

有时我会在变量名前加上 $ 符号,以表示它是一个 jQuery 封装的元素(通常当我在函数中经常使用 $(this) 时,我会将其分配给 $this)。

缺乏公约的部分原因可能来自于人们复制粘贴代码,这些代码使用不同的惯例,从而产生不一致的代码。

此外,有时候(希望很少)经常编写 PHP 代码的人会出于习惯而在变量名开头放置 $ 符号。


使用$来表示已保存的jQuery对象似乎是一个不错的做法。但当我看到它用于存储字符串或其他不相关类型的变量时,这让我感到困惑。 - Jonathon Faust
毫无疑问,在某些地方随意使用 $ 而在其他地方不使用是没有意义的。虽然在所有地方都使用它也很奇怪。 - pib

2
我怀疑那个例子中的人只是在模仿jQuery模式,或者习惯于PHP / Perl,而没有真正理解它不是必需的并且没有特殊含义。 然而,我曾看到有[经验丰富的]程序员将其用于保留关键字的变量名称,例如$class$this。甚至用于全局变量。在这种情况下,这真的只是个人偏好。

很可能会有人在不了解更好的选择时盲目地复制jQuery。 - Jonathon Faust

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接