web-dev-qa-db-fra.com

Quelqu'un peut-il expliquer le signe dollar en Javascript?

Le code en question est ici: 

var $item = $(this).parent().parent().find('input');

Quel est l'objectif du signe dollar dans le nom de la variable, pourquoi ne pas simplement l'exclure?

327
Keith Donegan

Un '$' dans une variable ne signifie rien de spécial pour l'interprète, un peu comme un trait de soulignement.

D'après ce que j'ai vu, beaucoup de gens utilisant jQuery (qui ressemble à votre exemple de code) ont tendance à préfixer les variables qui contiennent un objet jQuery avec un $ afin qu'elles soient facilement identifiées et non mélangées avec disons des nombres entiers.

La fonction de signe dollar $() dans jQuery est une fonction de bibliothèque fréquemment utilisée. Par conséquent, un nom court est souhaitable.

342
cobbal

Le signe $ est un identifiant pour les variables et les fonctions.

https://web.archive.org/web/20160529121559/http://www.authenticsociety.com/blog/javascript_dollarsign

Cela a une explication claire de ce que le signe dollar est pour.

Voici une explication alternative: http://www.vcarrer.com/2010/10/about-dollar-sign-in-javascript.html

36
AlbertoPL

Dans votre exemple, le $ n'a pas de signification particulière, à part le caractère du nom. 

Cependant, dans ECMAScript 6 (ES6), le $ peut représenter un Template Literal 

var user = 'Bob'
console.log(`We love ${user}.`); //Note backticks
// We love Bob.
32
UpTheCreek

Le signe dollar est traité comme une lettre normale ou un trait de soulignement (_). Cela n'a pas de signification particulière pour l'interprète.

Contrairement à de nombreux langages similaires, identifiants (tels que les noms de fonction et de variable) en Javascript peuvent contenir non seulement des lettres, des chiffres et des traits de soulignement, mais peut également contenir des signes dollar. Ils sont même autorisés à commencer avec un signe dollar ou à ne consister que seulement en un signe dollar et rien d’autre.

Ainsi, $ est une fonction valide ou un nom de variable en Javascript.

_ {Pourquoi voudriez-vous un signe dollar dans un identifiant?} _

La syntaxe n'impose pas l'utilisation du signe dollar dans un identifiant, vous pouvez donc choisir comment l'utiliser. Dans le passé, il était souvent recommandé de commencer un identificateur avec un signe dollar uniquement dans code généré - c’est-à-dire un code créé non pas à la main, mais par un générateur de code.

Dans votre exemple, cependant, cela ne semble pas être le cas. On dirait que quelqu'un a juste mis un signe dollar au début pour le plaisir - peut-être était-il un programmeur PHP qui l'avait fait par habitude ou quelque chose du genre. En PHP, tous les noms de variables doivent avoir un signe dollar devant eux.

Il existe actuellement une autre signification commune pour un signe dollar dans un interpréteur: l'objet jQuery, dont le nom only consiste en un seul signe dollar ($). Il s'agit d'une convention empruntée à des frameworks Javascript antérieurs, tels que Prototype, et si jQuery est utilisé avec d'autres frameworks similaires, il y aura conflit de noms car ils utiliseront tous deux le nom $ (jQuery peut être configuré pour utiliser un nom différent pour son objet global. ). Javascript n’a rien d’autorisant jQuery à utiliser le signe dollar unique comme nom d’objet; comme mentionné ci-dessus, il s'agit simplement d'un autre nom d'identifiant valide.

30
thomasrutter

Sans raison. Peut-être que la personne qui l'a codé vient de PHP. Cela a le même effet que si vous l'aviez nommé "_item" ou "item" ou "item $$". 

Peut-être est-ce une sorte de notation hongroise pour le codeur de noter que la variable est un élément DOM ou quelque chose du genre.

3
Claudiu

Voici une bonne courte explication vidéo: https://www.youtube.com/watch?v=Acm-MD_6934

Selon Ecma International, les noms d'identifiants sont des jetons qui sont interprétés selon la grammaire donnée dans la section «Identifiants» du chapitre 5 de la norme Unicode, avec quelques petites modifications. Un identifiant est un identifiant qui n'est pas un mot réservé ( voir 7.6.1 ). La grammaire d'identificateur Unicode est basée sur les catégories de caractères normatives et informatives spécifiées par le standard Unicode. Les caractères des catégories spécifiées dans la version 3.0 du standard Unicode doivent être traités comme appartenant à ces catégories par toutes les implémentations ECMAScript conformes. Ce standard spécifie des ajouts de caractères spécifiques:

Le signe dollar ($) et le trait de soulignement (_) sont autorisés n'importe où dans un IdentifierName

Des lectures complémentaires peuvent être trouvées sur: http://www.ecma-international.org/ecma-262/5.1/#sec-7.6

Ecma International est une association industrielle créée en 1961 et dédiée à la normalisation des technologies de l'information et de la communication (TIC) et de l'électronique grand public (CE).

1
Nomis

Lors de l'utilisation de jQuery, l'utilisation du symbole $ en tant que préfixe dans le nom de la variable est simplement effectuée par convention; il est complètement facultatif et sert uniquement à indiquer que la variable contient un objet jQuery, comme dans votre exemple.

Cela signifie que lorsqu'une autre fonction jQuery doit être appelée sur l'objet, vous n'avez pas besoin de l'envelopper à nouveau dans $(). Par exemple, comparez ces:

// the usual way
var item = $(this).parent().parent().find('input');
$(item).hide(); // this is a double wrap, but required for code readability
item.hide(); // this works but is very unclear how a jQuery function is getting called on this 

// with $ prefix
var $item = $(this).parent().parent().find('input');
$item.hide(); // direct call is clear
$($item).hide(); // this works too, but isn't necessary

Avec le préfixe $, les variables contenant déjà des objets jQuery sont immédiatement identifiables, le code est plus lisible et élimine le double/multiple recouvrement avec $().

0
SNag