我经常看到JavaScript中以美元符号开头的变量。什么时候/为什么选择以这种方式为变量加上前缀?
(我不是问你在jQuery和其他中看到的$('p.foo')语法,而是像$name和$order这样的正常变量)
我经常看到JavaScript中以美元符号开头的变量。什么时候/为什么选择以这种方式为变量加上前缀?
(我不是问你在jQuery和其他中看到的$('p.foo')语法,而是像$name和$order这样的正常变量)
当前回答
正如其他人所提到的,美元符号是用于机械生成的代码。然而,这种惯例已经被一些非常流行的JavaScript库打破了。JQuery, Prototype和MS AJAX(又名Atlas)都在它们的标识符中使用这个字符(或作为一个完整的标识符)。
简而言之,你可以随时使用美元。(翻译不会抱怨。)问题是你想什么时候使用它?
我个人不使用它,但我认为它的使用是有效的。我认为MS AJAX使用它来表示函数是一些更详细调用的别名。
例如:
var $get = function(id) { return document.getElementById(id); }
这似乎是一个合理的惯例。
其他回答
我有时在javascript变量中使用php名称约定的原因: 当进行输入验证时,我想在客户端运行完全相同的算法, 和服务器端。我真的希望两边的代码看起来尽可能相似,以简化维护。在变量名中使用美元符号会更容易。
(此外,一些明智的帮助函数有助于使代码看起来相似,例如包装输入值查找,strlen的非oo版本,substr等。不过,它仍然需要一些手动调整。)
由于变量名开头的_通常用于表示一个私有变量(或至少是一个私有变量),我发现$方便在我自己的简短别名前面添加到泛型代码库。
例如,在使用jQuery时,我更喜欢使用变量$J(而不是仅仅$),在使用php.js时使用$P,等等。
前缀使它在视觉上与其他变量(如我自己的静态变量)不同,提示我代码是某个库或其他库的一部分,一旦他们知道了约定,就不太可能与他人冲突或混淆。
它也不会像对每个库调用重复完全指定的名称那样使代码变得混乱(或需要额外的输入)。
我喜欢把它看作是类似于修饰键扩展单键可能性的作用。
但这只是我自己的习惯。
在AngularJS的上下文中,$前缀只用于框架代码中的标识符。框架的用户被告知不要在自己的标识符中使用它:
Angular命名空间$和$$ 为了防止与你的代码发生意外的名称冲突,Angular会在公共对象的名称前加上$,在私有对象的名称前加上$$。请不要在代码中使用$或$$前缀。
来源:https://docs.angularjs.org/api
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库打破了。JQuery, Prototype和MS AJAX(又名Atlas)都在它们的标识符中使用这个字符(或作为一个完整的标识符)。
简而言之,你可以随时使用美元。(翻译不会抱怨。)问题是你想什么时候使用它?
我个人不使用它,但我认为它的使用是有效的。我认为MS AJAX使用它来表示函数是一些更详细调用的别名。
例如:
var $get = function(id) { return document.getElementById(id); }
这似乎是一个合理的惯例。