我正在看一下角度1.2源代码,我只是好奇为什么有些函数以两个美元符号为前缀。这是某种惯例吗?
答案 0 :(得分:54)
$
用于保留的公共标识符$$
引用docs:
$ Prefix Naming Convention
...
如果您检查Scope,您可能还会注意到一些以$$开头的属性。这些属性被视为私有,不应被访问或修改。
答案 1 :(得分:6)
如果我可以补充:
除了对Angularjs有意义之外,'$$'或'$'只是变量名中允许的字符。 Angularjs使用两者来确定您和他们自己的开发团队的重要性。
您可以用同样的方式命名所有变量;但要避免命名碰撞,请远离这种做法。以下是一些例子,如果你做了......
$$$$myVariableName; $myVariableName$; _myVariableName_; $$$$$$myVariableName$$$$$$$$
如果您愿意,可以使用以下链接来测试JS变量名称:
以下是MDN的链接,解释了允许的字符:
以下是文字:
<强>变量强>
您可以将变量用作应用程序中值的符号名称。 名为标识符的变量名称符合某些规则。
JavaScript标识符必须以字母,下划线(_)或美元符号($)开头; 后续字符也可以是数字(0-9)。因为JavaScript区分大小写, 字母包括字符“A”到“Z”(大写)和字符“a”到“z” (小写)。
从JavaScript 1.5开始,您可以使用ISO 8859-1或Unicode字母,例如å和ü 在标识符中。您还可以将\ uXXXX Unicode转义序列用作标识符中的字符。
合法名称的一些示例是Number_hits,temp99和_name。
Angulajs在每个对象中包含了相当多的信息;一些项目适用于Angularjs,一些项目适用于开发人员,这意味着某些项目可能无法编辑,但如果您将其用于此目的,则所有项目都应该可供参考。
但是,在将来的版本中,任何私有标识符都可能会消失,因为Angularjs团队希望开发人员不要使用保留/私有名称。
在发布的“类似链接”的情况下,这是Angularjs所说的:
$前缀命名约定 您可以创建自己的服务,事实上我们将在第11步中完成。 作为命名约定,Angular的内置服务,Scope方法和其他一些 Angular API在名称前面有一个$前缀。
$前缀用于命名空间Angular提供的服务。防止碰撞 最好避免命名您的服务并模拟以$开头的任何内容。
如果您检查Scope,您可能还会注意到一些以$$开头的属性。 这些属性被视为私有,不应被访问或修改。