2013-10-12 91 views
40

我正在看1.2角度的源代码,我只是好奇为什么一些函数前缀两个美元符号。这是一种约定吗?

+1

另请参阅:http://stackoverflow.com/questions/12648543/angularjs-and-its-use-of-dollar-variables –

+0

哇,其他许多人都想知道同样的事情哈哈。 – ThinkingInBits

回答

52
  • $的保留,公共标识符
  • $$为保留私人标识符

引述docs

$前缀命名约定

...

如果您检查范围,您可能还会注意到一些以$$开头的属性。这些属性被认为是私有的,不应被访问或修改。

5

如果我可能会增加:

并非只是显著到Angularjs

Angularjs Docs

其他的“$$”或“$”只是被允许在变量名的字符。 Angularjs使用这两者来为您和他们自己的开发团队确定重要性。

您可以用同样的方法命名所有变量;但为避免命名冲突,请远离这种做法。下面是一些例子,如果你没有...

$$$$myVariableName; $myVariableName$; _myVariableName_; $$$$$$myVariableName$$$$$$$$ 

下面是测试出JS变量名称的链接,如果你想:

Variable Name Validator

这里是MDN的链接,以及解释允许的字符:

MDN allowed characters link

,这里是全文:

变量

你在你的应用程序中使用变量作为符号名的值。 称为标识符的变量名称符合特定规则。一个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方法和其他一些其他的角色API在名称前都有一个$前缀。

$前缀是有名称空间Angular提供的服务。为了防止碰撞 最好避免命名你的服务和模型以$开头的任何东西。

如果您检查范围,您可能还会注意到以$$开头的一些属性。 这些属性被认为是私有的,不应被访问或修改。

相关问题