Quelle est la signification du signe "$" dans JavaScript


167

Dans le code JavaScript suivant, il y a un $signe dollar ( ). Qu'est-ce que ça veut dire?

$(window).bind('load', function() {
    $('img.protect').protectImage();
});

1
Voir aussi: stackoverflow.com/a/553734/43615 (Pourquoi une variable JavaScript commencerait-elle par un signe dollar?)
Thomas Tempelmann

Réponses:


284

Votre extrait de code ressemble à des méthodes de référence de l'une des bibliothèques JavaScript les plus populaires (jQuery, ProtoType, mooTools, etc.).

Il n'y a rien de mystérieux dans l'utilisation de $JavaScript. $est simplement un identifiant JavaScript valide.

JavaScript autorise les lettres majuscules et minuscules, les chiffres $et _. Le a $été conçu pour être utilisé pour les variables générées par la machine (telles que $0001).

Prototype, jQuery et la plupart des bibliothèques javascript utilisent le $comme objet (ou fonction) de base principal. La plupart d'entre eux ont également un moyen d'abandonner le $afin qu'il puisse être utilisé avec une autre bibliothèque qui l'utilise. Dans ce cas, vous utilisez à la jQueryplace de $. En fait, ce $n'est qu'un raccourci pour jQuery.


2
@Paolo: Je ne sais pas exactement ce que tu veux dire. (Le mien était auparavant celui accepté, je suppose.) Eh bien, je pensais que le mien était tout à fait correct au moins. Cela inclut un peu d'informations auxiliaires, mais je ne suis pas sûr que cela justifie le "beaucoup" ...
Noldorin

1
@Noldorin: les informations complémentaires sont une bonne chose. Votre question n'a fait absolument aucune mention de la raison pour laquelle $ a été utilisé, de la raison pour laquelle il pourrait être utilisé, et du fait que jQuery n'est qu'une des nombreuses bibliothèques qui l'utilisent. L'avoir comme réponse acceptée signifie que c'est la meilleure réponse possible à une question, et ce n'était pas le cas.
Paolo Bergantino

+1 C'est d'abord un identifiant JavaScript valide et souvent utilisé par les frameworks JavaScript comme alias.
Gumbo

@Paolo: Souvent, oui. Rien n'indiquait cependant que le PO voulait en savoir plus. Une réponse directe est également une bonne chose. :) En disant cela, je serais toujours d'accord que c'est une meilleure réponse. Mon seul problème concernait l'accent que vous mettiez sur un point précis.
Noldorin

2
BTW, j'ai fourni un peu d'histoire derrière la fonction $ dans mon message ici: stackoverflow.com/questions/1122690/jquery-and-questions/...
SolutionYogi

44

D' une autre réponse :

Un peu d'histoire

N'oubliez pas qu'il n'y a rien de spécial en soi $. C'est un nom de variable comme les autres. Autrefois, les gens écrivaient du code en utilisant document.getElementById. Parce que JavaScript est sensible à la casse, il était normal de faire une erreur lors de l'écriture document.getElementById. Dois-je capital 'b'de 'by'? Dois-je capital 'i'de Id?vous obtenir la dérive. Étant donné que les fonctions sont des citoyens de première classe en JavaScript, vous pouvez toujours le faire:

var $ = document.getElementById; //freedom from document.getElementById!

Lorsque la bibliothèque Prototype est arrivée, ils ont nommé leur fonction, qui obtient les éléments DOM, comme '$'. Presque toutes les bibliothèques JavaScript ont copié cette idée. Prototype a également introduit une $$fonction pour sélectionner des éléments à l'aide du sélecteur CSS.

jQuery a également adapté la $fonction mais développé pour lui faire accepter toutes sortes de 'sélecteurs' pour obtenir les éléments que vous voulez. Maintenant, si vous utilisez déjà Prototype dans votre projet et que vous vouliez inclure jQuery, vous rencontrerez des problèmes comme vous '$'pourriez vous référer à l'implémentation de Prototype OU à l'implémentation de jQuery. C'est pourquoi jQuery a l'option de noConflict afin que vous puissiez inclure jQuery dans votre projet qui utilise Prototype et migrer lentement votre code. Je pense que c'était un geste brillant de la part de John! :)


10
var $ = document.getElementById;ne fonctionne pas dans Firefox ou Google Chrome. Vous devriez utiliser à la function $(id) { return document.getElementById(id); }place. Voir stackoverflow.com/questions/1007340 pour plus d'informations.
Grant Wagner

Je ne savais pas ça, merci Grant. Je peux confirmer que cela fonctionnait dans IE6 ainsi que Firefox 2 car j'utilisais fréquemment cette technique. Je mettrai à jour mon message principal.
SolutionYogi

42

C'est probablement jQuery code (plus précisément, JavaScript utilisant la bibliothèque jQuery).

Le $représente la fonction jQuery et est en fait un alias abrégé pour jQuery. (Contrairement à la plupart des langages, le $symbole n'est pas réservé et peut être utilisé comme nom de variable.) Il est généralement utilisé comme sélecteur (c'est-à-dire une fonction qui renvoie un ensemble d'éléments trouvés dans le DOM).


3
Vous devriez ajouter que $ est exactement comme x, cela pourrait être tout ce que vous lui attribuez
hasen

Que signifie ce morceau de code: $ input.prop ('type') == 'radio';
OKGimmeMoney

21

Comme le disent toutes les autres réponses; cela peut être presque n'importe quoi mais c'est généralement "JQuery".

Cependant, dans ES6, il s'agit d'un opérateur d'interpolation de chaîne dans un modèle "littéral" par exemple.

var s = "new" ; // you can put whatever you think appropriate here.
var s2 = `There are so many ${s} ideas these days !!` ; //back-ticks not quotes
console.log(s2) ;

résultat:

Il y a tellement de nouvelles idées ces jours-ci !!


2
C'est une réponse utile! C'était celle que je recherchais car je savais que nous n'avions ni jQuery ni aucune autre bibliothèque. C'est essentiellement un moyen d'imprimer une variable dans une chaîne plus grande sans utiliser de guillemets et de signes plus, etc.
Oscar Bravo


4

En plus des réponses ci-dessus, $n'a pas de signification particulière en javascript, il est gratuit pour être utilisé dans la dénomination des objets. En jQuery , il est simplement utilisé comme un alias pour le jQuery objet et jQuery () fonction. Cependant, vous pouvez rencontrer des situations où vous souhaitez l'utiliser conjointement avec une autre bibliothèque JS qui utilise également $, ce qui entraînerait un conflit de dénomination. Il existe une méthode dans JQuery juste pour cette raison,jQuery.noConflict() .

Voici un échantillon de la documentation jQuery :

<script src="other_lib.js"></script>
<script src="jquery.js"></script>
<script>
$.noConflict();
// Code that uses other library's $ can follow here.
</script>

Alternativement, vous pouvez également utiliser un comme celui-ci

(function ($) {
// Code in which we know exactly what the meaning of $ is
} (jQuery));

Réf : https://api.jquery.com/jquery.noconflict/


3

À partir de la documentation jQuery décrivant l' objet jQuery Core :

De nombreux développeurs préfixent un $ au nom des variables qui contiennent des objets jQuery afin d'aider à se différencier. Il n'y a rien de magique dans cette pratique - cela aide simplement certaines personnes à garder une trace de ce que les différentes variables contiennent.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.