Frequentemente vejo JavaScript com variáveis que começam com um cifrão. Quando / por que você escolheria o prefixo de uma variável dessa maneira?
(Eu não estou perguntando sobre a $('p.foo')
sintaxe que você vê no jQuery e outros, mas variáveis normais como $name
e $order
)
Respostas:
O uso muito comum no jQuery é distinguir objetos jQuery armazenados em variáveis de outras variáveis.
Por exemplo, eu definiria:
Acho que isso é muito útil para escrever código jQuery e facilita a exibição de objetos jQuery que possuem um conjunto diferente de propriedades.
fonte
Na 1ª, 2ª e 3ª edição do ECMAScript , o uso de nomes de variáveis com prefixo $ foi explicitamente desencorajado pelas especificações, exceto no contexto do código gerado automaticamente:
No entanto, na próxima versão (a 5ª edição , atual), essa restrição foi descartada e a passagem acima substituída por
Como tal, o sinal $ agora pode ser usado livremente em nomes de variáveis. Certas estruturas e bibliotecas têm suas próprias convenções sobre o significado do símbolo, anotadas em outras respostas aqui.
fonte
$variable
, é provável que contenha um objeto jQuery inteiro.Como outros mencionaram, o cifrão deve ser usado pelo código gerado mecanicamente. No entanto, essa convenção foi quebrada por algumas bibliotecas JavaScript muito populares. JQuery, Prototype e MS AJAX (AKA Atlas), todos usam esse caractere em seus identificadores (ou como um identificador inteiro).
Em suma, você pode usar o
$
quando quiser. (O intérprete não vai reclamar.) A questão é quando você quer usá-lo?Eu pessoalmente não o uso, mas acho que seu uso é válido. Eu acho que o MS AJAX usa para significar que uma função é um alias para uma chamada mais detalhada.
Por exemplo:
Parece uma convenção razoável.
fonte
No contexto do AngularJS, o
$
prefixo é usado apenas para identificadores no código da estrutura. Os usuários da estrutura são instruídos a não usá-la em seus próprios identificadores:Fonte: https://docs.angularjs.org/api
fonte
Eu fui a pessoa que originou essa convenção em 2006 e a promoveu na lista de discussão inicial do jQuery, então deixe-me compartilhar um pouco da história e da motivação em torno dela.
A resposta aceita dá este exemplo:
Mas isso realmente não ilustra bem. Mesmo sem o
$
, ainda teríamos dois nomes de variáveis diferentes aqui,email
eemail_field
. Isso é muito bom aqui. Por que precisaríamos colocar um$
em um dos nomes quando já temos dois nomes diferentes?Na verdade, eu não teria usado
email_field
aqui por dois motivos:names_with_underscores
não é JavaScript idiomático efield
realmente não faz sentido para um elemento DOM. Mas eu segui a mesma ideia.Eu tentei algumas coisas diferentes, entre elas algo muito semelhante ao exemplo:
(É claro que um objeto jQuery pode ter mais de um elemento DOM, mas o código no qual eu estava trabalhando tinha muitas
id
seletores; portanto, nesses casos, havia uma correspondência 1: 1.)Eu tive outro caso em que uma função recebeu um elemento DOM como parâmetro e também precisava de um objeto jQuery:
Bem, isso é um pouco confuso! Em um dos meus bits de código,
email
está o objeto jQuery eemailElement
é o elemento DOM, mas no outro,email
é o elemento DOM eemailJQ
é o objeto jQuery.Não havia consistência e eu continuei misturando-os. Além disso, era um pouco incômodo continuar criando dois nomes diferentes para a mesma coisa: um para o objeto jQuery e outro para o elemento DOM correspondente. Além de
email
,emailElement
eemailJQ
, eu continuei tentando outras variações também.Então notei um padrão comum:
Como o JavaScript trata
$
simplesmente como outra letra para nomes, e como sempre recebi um objeto jQuery de uma$(whatever)
chamada, o padrão finalmente me ocorreu. Eu poderia atender uma$(...)
ligação e apenas remover alguns caracteres, e ele teria um nome muito bonito:Strikeout não é perfeito, mas você pode ter a idéia: com alguns caracteres excluídos, ambas as linhas acabam parecendo:
Foi quando percebi que não precisava criar uma convenção como
emailElement
ouemailJQ
. Já havia uma boa convenção me encarando: desconecte alguns caracteres de uma$(whatever)
ligação e ela se transforma$whatever
.e:
Portanto, não tive que inventar dois nomes diferentes o tempo todo, mas poderia usar o mesmo nome com ou sem um
$
prefixo. E o$
prefixo era um bom lembrete de que eu estava lidando com um objeto jQuery:ou:
fonte
Stevo está certo, o significado e o uso do cifrão (em Javascript e na plataforma jQuery, mas não em PHP) é totalmente semântico. $ é um caractere que pode ser usado como parte de um nome de identificador. Além disso, o cifrão talvez não seja a coisa mais "estranha" que você pode encontrar em Javascript. Aqui estão alguns exemplos de nomes de identificadores válidos:
Todos os exemplos acima funcionarão.
Tente eles.
fonte
O caractere $ não tem significado especial para o mecanismo JavaScript. É apenas outro caractere válido em um nome de variável como az, AZ, _, 0-9, etc ...
fonte
$
não tem significado especial no JavaScript. Período.Como
_
no início de um nome de variável é frequentemente usado para indicar uma variável privada (ou pelo menos uma que se destina a permanecer privada), acho$
conveniente adicionar em frente aos meus breves aliases às bibliotecas de códigos genéricas.Por exemplo, ao usar jQuery, prefiro usar a variável
$J
(em vez de apenas$
) e usar$P
ao usar o php.js, etc.O prefixo o torna visualmente distinto de outras variáveis, como minhas próprias variáveis estáticas, levando-me ao fato de que o código faz parte de alguma biblioteca ou outra e é menos provável que entre em conflito ou confunda outras pessoas quando conhecerem a convenção.
Ele também não confunde o código (ou requer digitação extra), assim como um nome totalmente especificado repetido para cada chamada de biblioteca.
Eu gosto de pensar nisso como sendo semelhante ao que as teclas modificadoras fazem para expandir as possibilidades de teclas únicas.
Mas esta é apenas a minha própria convenção.
fonte
Como experimentei nos últimos 4 anos, permitirá que alguém identifique facilmente se a variável que aponta um valor / objeto ou um elemento DOM envolto por jQuery
no exemplo acima, quando vejo a variável "$ dataDiv", posso facilmente dizer que essa variável está apontando para um elemento DOM envolto em jQuery (nesse caso, é div). e também posso chamar todos os métodos jQuery sem quebrar o objeto novamente como $ dataDiv.append (), $ dataDiv.html (), $ dataDiv.find () em vez de $ ($ dataDiv) .append ().
Espero que possa ter ajudado. então, finalmente, quero dizer que será uma boa prática seguir isso, mas não obrigatório.
fonte
${varname}
é apenas uma convenção de nomenclatura que os desenvolvedores do jQuery usam para distinguir variáveis que estão contendo elementos do jQuery.Plain
{varname}
é usado para armazenar materiais em geral, como textos e strings.${varname}
contém elementos retornados do jQuery.Você pode usar planície
{varname}
para armazenar elementos jQuery, mas, como eu disse no começo, isso os diferencia das variáveis simples e facilita muito o entendimento (imagine confundi-lo com uma variável simples e pesquisar por tudo para entender o que ele contém) .Por exemplo :
Aqui, blá está armazenando um elemento jQuery retornado.
Portanto, quando alguém vê o
$blah
código, ele entende que não é apenas uma sequência ou um número, é um elemento jQuery.fonte
Embora você possa simplesmente usá-lo para prefixar seus identificadores, ele deve ser usado para o código gerado, como tokens de substituição em um modelo, por exemplo.
fonte
Usos angulares são para propriedades geradas pela estrutura. Acho que eles estão seguindo a dica (agora extinta) fornecida pelo ECMA-262 3.0.
fonte
$ é usado para DISTINGUISH entre variáveis comuns e variáveis de jquery no caso de variáveis normais. permitir que você faça um pedido no FLIPKART; se o pedido for uma variável que mostre a saída da string, ele será nomeado simples como "order"; order "para que o programador consiga extrair as variáveis javascript e as variáveis jquery em todo o código.
fonte
Se você vir o cifrão ($) ou o cifrão duplo ($$) e estiver curioso para saber o que isso significa na estrutura do Prototype, aqui está sua resposta:
Fonte:
http://www.prototypejs.org/api/utility/dollar-dollar
fonte
Às vezes, uso convenções de nomes php com variáveis javascript: Ao fazer a validação de entrada, quero executar exatamente os mesmos algoritmos, tanto do lado do cliente quanto do lado do servidor. Eu realmente quero que os dois lados do código pareçam o mais semelhante possível, para simplificar a manutenção. O uso de cifrões em nomes de variáveis facilita isso.
(Além disso, algumas funções auxiliares criteriosas ajudam a tornar o código parecido, por exemplo, agrupar pesquisas de valor de entrada, versões não OO de strlen, substr, etc. Ainda requer alguns ajustes manuais.)
fonte
Um identificador JavaScript válido deve começar com uma letra, sublinhado (_) ou cifrão ($); caracteres subsequentes também podem ser dígitos (0-9). Como o JavaScript diferencia maiúsculas de minúsculas, as letras incluem os caracteres "A" a "Z" (maiúsculas) e os caracteres "a" a "z" (minúsculas).
Detalhes:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Grammar_and_types#Variables
fonte