Qual é o $$ (cifrão duplo) usado em angular?

Eu estou dando uma olhada no código-fonte de 1,2 angular, e estou curioso para saber porque algumas funções são prefixadas com os dois sinais de dólar. Isso é algum tipo de convenção?

  • Único $ para identificadores públicos reservados
  • Double $$ para identificadores privados reservados

Para citar os documentos :

$ Prefixing Naming Convention

Se você inspecionar um escopo, você também poderá notar algumas propriedades que começam com $$. Essas propriedades são consideradas privadas e não devem ser acessadas ou modificadas.

Se eu puder adicionar:

Angularjs Docs

Além de ser significativo para o Angularjs, o ‘$$’ ou ‘$’ são apenas caracteres permitidos em nomes de variables. Angularjs usa ambos para identificar significância para você e sua própria equipe de desenvolvimento.

Você poderia nomear todas as suas variables ​​da mesma maneira; mas para evitar nomear colisões, fique longe dessa prática. Aqui estão alguns exemplos, se você fez …

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

Aqui está um link para testar nomes de variables ​​JS, se desejar:

Validador de nome de variável

Aqui está um link para o MDN também que explica os caracteres permitidos:

MDN permitido link de caracteres

e aqui está o texto:

Variáveis

Você usa variables ​​como nomes simbólicos para valores em seu aplicativo. Os nomes das variables, chamados identificadores, estão em conformidade com certas regras.

Um identificador JavaScript deve começar com uma letra, sublinhado (_) ou cifrão ($); caracteres subsequentes também podem ser dígitos (0-9). Como o JavaScript faz distinção entre maiúsculas e minúsculas, as letras incluem os caracteres “A” a “Z” (maiúsculas) e os caracteres “a” a “z” (minúsculas).

A partir do JavaScript 1.5, você pode usar as letras ISO 8859-1 ou Unicode, como å e ü em identificadores. Você também pode usar as sequências de escape Unicode \ uXXXX como caracteres em identificadores.

Alguns exemplos de nomes legais são Number_hits, temp99 e _name.

Angulajs inclui um pouco de informação em cada object; alguns dos itens são para Angularjs, e alguns são para o desenvolvedor, o que significa que alguns podem não ser editáveis, mas todos devem estar disponíveis para referência, se é para isso que você vai usá-lo.

No entanto, em versões futuras, quaisquer identificadores privados podem desaparecer, pois a equipe do Angularjs espera que o desenvolvedor não use os nomes reservado / privado.

No caso do ‘link similar’ postado, aqui está o que o Angularjs diz:

$ Prefix Naming Convention Você pode criar seus próprios serviços e, na verdade, faremos exatamente isso na etapa 11. Como convenção de nomenclatura, os serviços internos do Angular, os methods do Scope e algumas outras APIs angulares têm um prefixo $ na frente do nome.

O prefixo $ está lá para nomear os serviços fornecidos pela Angular. Para evitar colisões, é melhor evitar nomear seus serviços e modelar qualquer coisa que comece com $.

Se você inspecionar um escopo, você também poderá notar algumas propriedades que começam com $$. Essas propriedades são consideradas privadas e não devem ser acessadas ou modificadas.