Pourquoi une variable JavaScript commencerait-elle par un signe dollar?

Je vois souvent JavaScript avec des variables qui commencent par un signe dollar. Quand / pourquoi choisiriez-vous préfixer une variable de cette manière?

(Je ne demande pas la syntaxe $('p.foo') que vous voyez dans jQuery et d'autres, mais des variables normales comme $name et $order )

Une utilisation très courante dans jQuery consiste à distinguer les objets jQuery stockés dans les variables à partir d'autres variables. Par exemple, je définirais

 var $email = $("#email"); // refers to the jQuery object representation of the dom object var email_field = $("#email").get(0); // refers to the dom object itself 

Je trouve cela très utile pour écrire le code jQuery et permet de voir facilement les objets jQuery qui ont un ensemble différent de propriétés.

Dans la 1ère, 2ème et 3ème édition de ECMAScript , le nom des variables préfabriquées $ a été explicitement découragé par les spécifications sauf dans le contexte du code autogénéré:

Le signe dollar ( $ ) et le trait de soulignement ( _ ) sont autorisés partout dans un identifiant. Le signe dollar est destiné à être utilisé uniquement dans un code généré mécaniquement.

Cependant, dans la prochaine version (la 5ème édition , qui est actuelle), cette restriction a été supprimée et le passage ci-dessus a été remplacé par

Le signe dollar ( $ ) et le trait de soulignement ( _ ) sont autorisés partout dans un IdentifierName .

En tant que tel, le signe $ peut maintenant être utilisé librement dans des noms de variables. Certains cadres et bibliothèques ont leurs propres conventions sur la signification du symbole, noté dans d'autres réponses ici.

Comme d'autres l'ont mentionné, le signe dollar est destiné à être utilisé par code généré mécaniquement. Cependant, cette convention a été rompue par certaines bibliothèques JavaScript très populaires. JQuery, Prototype et MS AJAX (AKA Atlas) utilisent ce caractère dans leurs identifiants (ou comme un identifiant entier).

En bref, vous pouvez utiliser le $ chaque fois que vous le souhaitez. (L'interprète ne se plaint pas.) La question est de savoir quand voulez- vous l'utiliser?

Personnellement, je ne l'utilise pas, mais je pense que son utilisation est valide. Je pense que MS AJAX l'utilise pour indiquer qu'une fonction est un alias pour un appel plus détaillé.

Par exemple:

 var $get = function(id) { return document.getElementById(id); } 

Cela semble être une convention raisonnable.

Dans le contexte d'AngularJS, le préfixe $ est utilisé uniquement pour les identifiants dans le code du cadre. Les utilisateurs du cadre sont invités à ne pas l'utiliser dans leurs propres identifiants:

Espaces $ noms angulaires $ et $$

Pour éviter les collisions accidentelles avec votre code, Angular préfixe les noms des objets publics avec $ et les noms des objets privés avec $$ . N'utilisez pas le préfixe $ ou $$ dans votre code.

Source: https://docs.angularjs.org/api

Stevo a raison, la signification et l'utilisation du signe de script dollar (dans Javascript et la plate-forme jQuery, mais pas en PHP) est complètement sémantique. $ Est un caractère qui peut être utilisé dans le cadre d'un nom d'identifiant. En outre, le signe dollar n'est peut-être pas la chose la plus "étrange" que vous pouvez rencontrer en Javascript. Voici quelques exemples de noms d'identifiants valides:

 var _ = function() { alert("hello from _"); } var \u0024 = function() { alert("hello from $ defined as u0024"); } var Ø = function() { alert("hello from Ø"); } var $$$$$ = function() { alert("hello from $$$$$"); } 

Tous les exemples ci-dessus fonctionneront.

Essayez les.

Le caractère $ n'a aucun sens spécial pour le moteur de JavaScript. C'est juste un autre personnage valide dans un nom de variable comme az, AZ, _, 0-9, etc.

Puisque _ au début d'un nom de variable est souvent utilisé pour indiquer une variable privée (ou au moins une destinée à rester privée), je trouve $ convenable pour ajouter devant mes propres aliass aux bibliothèques de code générique.

Par exemple, lors de l'utilisation de jQuery, je préfère utiliser la variable $J (au lieu de seulement $ ) et utiliser $P lors de l'utilisation de php.js, etc.

Le préfixe le distingue visuellement d'autres variables telles que mes propres variables statiques, m'entraînant dans le fait que le code fait partie d'une bibliothèque ou d'une autre, et est moins susceptible de contester ou de confondre les autres une fois qu'ils connaissent la convention.

Il ne trouble pas non plus le code (ou nécessite une saisie supplémentaire), de même qu'un nom entièrement spécifié est répété pour chaque appel de bibliothèque.

J'aime penser à cela comme étant similaire à ce que les touches modificatrices permettent d'élargir les possibilités des clés individuelles.

Mais ce n'est que ma propre convention.

Comme je l'ai vécu depuis 4 ans, cela permettra à quelqu'un d'identifier facilement si la variable indiquant une valeur / un objet ou un élément DOM enveloppé jQuery

 Ex: var name = 'jQuery'; var lib = {name:'jQuery',version:1.6}; var $dataDiv = $('#myDataDiv'); 

Bien que vous puissiez simplement l'utiliser pour préfixer vos identifiants, il est censé être utilisé pour le code généré, par exemple, des jetons de rechange dans un modèle.

${varname} est juste une convention de dénomination Les développeurs jQuery utilisent pour distinguer les variables qui contiennent des éléments jQuery.

Plain {varname} est utilisé pour stocker des {varname} généraux comme des textes et des chaînes. ${varname} contient les éléments renvoyés par jQuery.

Vous pouvez utiliser simplement {varname} pour stocker les éléments jQuery, mais comme je l'ai dit au début, cela le distingue des variables simples et le rend beaucoup plus facile à comprendre (imaginez le confondre pour une variable simple et la recherche pour comprendre ce que ça tiens).

Par exemple :

 var $blah = $(this).parents('.blahblah'); 

Ici, blah stocke un élément jQuery retourné.

Alors, quand quelqu'un d'autre verra le $blah dans le code, ils comprendront que ce n'est pas seulement une chaîne ou un nombre, c'est un élément jQuery.

Les utilisations angulaires sont pour les propriétés générées par le framework. Devinez, ils vont par l'indice (maintenant défunts) fourni par l'ECMA-262 3.0.

Si vous voyez le signe dollar ($) ou le double signe dollar ($$), et êtes curieux de savoir ce que cela signifie dans le cadre Prototype, voici votre réponse:

 $$('div'); // -> all DIVs in the document. Same as document.getElementsByTagName('div')! $$('#contents'); // -> same as $('contents'), only it returns an array anyway (even though IDs must be unique within a document). $$('li.faux'); // -> all LI elements with class 'faux' 

La source:
http://www.prototypejs.org/api/utility/dollar-dollar

$ Est utilisé pour DISTINGUER entre variables communes et variables jquery en cas de variables normales. Vous permet de passer une commande dans FLIPKART, si l'ordre est une variable qui vous montre la sortie de la chaîne puis on l'appelle simple comme "commande" mais si on clique sur l'ordre de la place, un objet est retourné, cet objet sera désigné par $ comme "$ Commande "afin que le programmateur soit capable de supprimer les variables javascript et les variables jquery dans l'intégralité du code.

La raison pour laquelle j'utilise parfois les conventions de nom php avec les variables javascript: lors de la validation de l'entrée, je souhaite exécuter exactement les mêmes algorithmes à la fois côté client et côté serveur. Je souhaite vraiment que les deux côtés du code soient aussi similaires que possible, afin de simplifier la maintenance. L'utilisation de signes en dollars dans des noms de variables rend cela plus facile.

(En outre, certaines fonctions judicieuses d'aide aident à faire ressembler le code, par exemple, l'emballage des recherches de valeur d'entrée, des versions non-OO de strlen, substr, etc. Il nécessite encore quelques ajustements manuels.)

Un identificateur JavaScript valide doit commencer par une lettre, un trait de soulignement (_) ou un signe dollar ($); Les caractères suivants peuvent aussi être des chiffres (0 à 9). Parce que JavaScript est sensible à la casse, les lettres comprennent les caractères "A" à "Z" (majuscule) et les caractères "a" à "z" (minuscules).

Détails:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Grammar_and_types#Variables