Je vois assez souvent JavaScript avec des variables qui commencent par un signe dollar. Quand / pourquoi choisiriez-vous de préfixer une variable de cette façon?
(Je ne parle pas de la $('p.foo')
syntaxe que vous voyez dans jQuery et autres, mais des variables normales comme $name
et $order
)
Réponses:
L'utilisation très courante dans jQuery consiste à distinguer les objets jQuery stockés dans des variables des autres variables.
Par exemple, je définirais:
Je trouve cela très utile pour écrire du code jQuery et permet de voir facilement les objets jQuery qui ont un ensemble de propriétés différent.
la source
Dans les 1re, 2e et 3e éditions d'ECMAScript , l'utilisation de noms de variables préfixés par $ était explicitement déconseillée par la spécification, sauf dans le contexte du code généré automatiquement:
Cependant, dans la prochaine version (la 5e édition , qui est actuelle), cette restriction a été supprimée et le passage ci-dessus remplacé par
En tant que tel, le signe $ peut désormais être utilisé librement dans les noms de variables. Certains cadres et bibliothèques ont leurs propres conventions sur la signification du symbole, notées dans d'autres réponses ici.
la source
$variable
, c'est probablement parce qu'il contient un objet jQuery entier.Comme d'autres l'ont mentionné, le signe dollar est destiné à être utilisé par du 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 tous ce caractère dans leurs identifiants (ou comme identifiant complet).
En bref, vous pouvez utiliser le
$
quand vous le souhaitez. (L'interprète ne se plaindra pas.) La question est quand voulez- vous l' utiliser?Personnellement, je ne l'utilise pas, mais je pense que son utilisation est valable. Je pense que MS AJAX l'utilise pour signifier qu'une fonction est un alias pour un appel plus détaillé.
Par exemple:
Cela semble être une convention raisonnable.
la source
Dans le contexte d'AngularJS, le
$
préfixe est utilisé uniquement pour les identifiants dans le code du framework. Les utilisateurs du framework sont invités à ne pas l'utiliser dans leurs propres identifiants:Source: https://docs.angularjs.org/api
la source
J'étais la personne qui a créé cette convention en 2006 et l'a promue sur la première liste de diffusion jQuery, alors permettez-moi de partager une partie de l'histoire et de la motivation autour d'elle.
La réponse acceptée donne cet exemple:
Mais cela ne l'illustre pas vraiment bien. Même sans le
$
, nous aurions toujours deux noms de variables différents ici,email
etemail_field
. C'est très bien ici. Pourquoi aurions-nous besoin de mettre un$
dans l'un des noms alors que nous avons déjà deux noms différents?En fait, je ne l'aurais pas utilisé
email_field
ici pour deux raisons:names_with_underscores
ne sont pas du JavaScript idiomatique etfield
n'ont pas vraiment de sens pour un élément DOM. Mais j'ai suivi la même idée.J'ai essayé quelques choses différentes, parmi lesquelles quelque chose de très similaire à l'exemple:
(Bien sûr, un objet jQuery peut avoir plus d'un élément DOM, mais le code sur lequel je travaillais avait beaucoup de
id
sélecteurs, donc dans ces cas, il y avait une correspondance 1: 1.)J'ai eu un autre cas où une fonction a reçu un élément DOM en tant que paramètre et avait également besoin d'un objet jQuery pour cela:
Eh bien, c'est un peu déroutant! Dans l'un de mes morceaux de code,
email
est l'objet jQuery etemailElement
est l'élément DOM, mais dans l'autre,email
est l'élément DOM etemailJQ
est l'objet jQuery.Il n'y avait aucune consistance et je continuais à les mélanger. De plus, c'était un peu gênant de devoir inventer deux noms différents pour la même chose: un pour l'objet jQuery et un autre pour l'élément DOM correspondant. De plus
email
,emailElement
etemailJQ
, j'ai continué à essayer d'autres variantes aussi.Ensuite, j'ai remarqué un schéma commun:
Étant donné que JavaScript traite
$
simplement comme une autre lettre pour les noms, et comme je récupère toujours un objet jQuery à partir d'un$(whatever)
appel, le modèle est finalement apparu sur moi. Je pourrais prendre un$(...)
appel et simplement supprimer certains caractères, et cela donnerait un nom assez sympa:Strikeout n'est pas parfait, mais vous pouvez avoir l'idée: avec certains caractères supprimés, ces deux lignes finissent par ressembler à:
C'est alors que j'ai réalisé que je n'avais pas besoin de créer une convention comme
emailElement
ouemailJQ
. Il y avait déjà une belle convention qui me fixait: retirer certains personnages d'un$(whatever)
appel et ça se transforme en$whatever
.et:
Je n'ai donc pas eu à inventer deux noms différents tout le temps, mais je pouvais simplement utiliser le même nom avec ou sans
$
préfixe. Et le$
préfixe était un bon rappel que j'avais affaire à un objet jQuery:ou:
la source
Stevo a raison, la signification et l'utilisation du signe du script dollar (en Javascript et sur la plate-forme jQuery, mais pas en PHP) sont complètement sémantiques. $ est un caractère qui peut être utilisé dans le cadre d'un nom d'identifiant. De plus, le signe dollar n'est peut-être pas la chose la plus "bizarre" que vous puissiez rencontrer en Javascript. Voici quelques exemples de noms d'identificateurs valides:
Tous les exemples ci-dessus fonctionneront.
Essayez les.
la source
Le caractère $ n'a pas de signification particulière pour le moteur JavaScript. C'est juste un autre caractère valide dans un nom de variable comme az, AZ, _, 0-9, etc ...
la source
$
n'a pas de signification particulière en JavaScript. Période.Puisqu'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$
pratique d'ajouter devant mes propres brèves alias aux bibliothèques de code génériques.Par exemple, lorsque j'utilise jQuery, je préfère utiliser la variable
$J
(au lieu de simplement$
) et utiliser$P
lors de l'utilisation de php.js, etc.Le préfixe le rend visuellement distinct des autres variables telles que mes propres variables statiques, m'indiquant que le code fait partie d'une bibliothèque ou d'une autre, et est moins susceptible de contredire ou de confondre les autres une fois qu'ils connaissent la convention.
Il n'encombre pas non plus le code (ou ne nécessite pas de saisie supplémentaire) comme le fait un nom entièrement spécifié répété pour chaque appel de bibliothèque.
J'aime à penser que c'est similaire à ce que font les touches de modification pour étendre les possibilités des touches simples.
Mais ce n'est que ma propre convention.
la source
Comme je l'ai expérimenté au cours des 4 dernières années, cela permettra à quelqu'un d'identifier facilement si la variable pointant une valeur / un objet ou un élément DOM enveloppé par jQuery
dans l'exemple ci-dessus, lorsque je vois la variable "$ dataDiv", je peux facilement dire que cette variable pointant vers un élément DOM enveloppé par jQuery (dans ce cas, il s'agit de div). et je peux également appeler toutes les méthodes jQuery sans encapsuler à nouveau l'objet comme $ dataDiv.append (), $ dataDiv.html (), $ dataDiv.find () au lieu de $ ($ dataDiv) .append ().
J'espère que cela peut aider. Je veux donc enfin dire que ce sera une bonne pratique de suivre cela, mais pas obligatoire.
la source
${varname}
est juste une convention de dénomination que les développeurs jQuery utilisent pour distinguer les variables qui contiennent des éléments jQuery.Plain
{varname}
est utilisé pour stocker des éléments généraux comme des textes et des chaînes.${varname}
contient les éléments renvoyés par jQuery.Vous pouvez utiliser plain
{varname}
pour stocker des é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 chercher partout pour comprendre ce qu'elle contient) .Par exemple :
Ici, blah stocke un élément jQuery retourné.
Ainsi, lorsque quelqu'un d'autre le verra
$blah
dans le code, il comprendra que ce n'est pas seulement une chaîne ou un nombre, c'est un élément jQuery.la source
Bien que vous puissiez simplement l'utiliser pour préfixer vos identifiants, il est censé être utilisé pour le code généré, comme les jetons de remplacement dans un modèle, par exemple.
la source
Les utilisations angulaires concernent les propriétés générées par le framework. Devinez, ils vont par l'indice (maintenant disparu) fourni par l'ECMA-262 3.0.
la source
$ est utilisé pour DISTINGUER entre les variables communes et les variables jquery en cas de variables normales. laissez-vous passer une commande dans FLIPKART puis si la commande est une variable vous montrant la sortie de la chaîne alors elle est nommée simple comme "commande" mais si nous cliquons sur passer commande alors un objet est retourné cet objet sera désigné par $ comme "$ order "afin que le programmeur puisse extraire les variables javascript et les variables jquery dans tout le code.
la source
Si vous voyez le signe dollar ($) ou le double signe dollar ($$) et que vous êtes curieux de savoir ce que cela signifie dans le cadre du prototype, voici votre réponse:
Source:
http://www.prototypejs.org/api/utility/dollar-dollar
la source
La raison pour laquelle j'utilise parfois des conventions de nom php avec des variables javascript: lors de la validation des entrées, je veux exécuter exactement les mêmes algorithmes côté client et côté serveur. Je veux vraiment que les deux côtés du code soient aussi similaires que possible, pour simplifier la maintenance. L'utilisation des signes dollar dans les noms de variables facilite cette opération.
(De plus, certaines fonctions d'aide judicieuses aident à rendre le code similaire, par exemple, en regroupant les recherches de valeur d'entrée, les versions non OO de strlen, substr, etc. Cela nécessite cependant quelques ajustements manuels.)
la source
Un identifiant JavaScript valide shuold doit commencer par une lettre, un trait de soulignement (_) ou un signe dollar ($); les caractères suivants peuvent également être des chiffres (0-9). Parce que JavaScript est sensible à la casse, les lettres incluent les caractères "A" à "Z" (majuscules) et les caractères "a" à "z" (minuscules).
Détails:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Grammar_and_types#Variables
la source