Qual è il significato di "$" in JavaScript


167

Nel seguente codice JavaScript c'è un $segno di dollaro ( ). Cosa significa?

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

1
Vedi anche: stackoverflow.com/a/553734/43615 (Perché una variabile JavaScript dovrebbe iniziare con un segno di dollaro?)
Thomas Tempelmann

Risposte:


284

Lo snippet di codice sembra fare riferimento a metodi di una delle librerie JavaScript più diffuse (jQuery, ProtoType, mooTools e così via).

Non c'è nulla di misterioso nell'uso di $JavaScript. $è semplicemente un identificatore JavaScript valido.

JavaScript consente lettere maiuscole e minuscole, numeri e $e _. L' $intento era di essere utilizzato per variabili generate dalla macchina (come $0001).

Prototype, jQuery e la maggior parte delle librerie javascript usano l' $oggetto base (o la funzione) principale. La maggior parte di loro ha anche un modo di rinunciare al $modo che possa essere utilizzato con un'altra libreria che lo utilizza. In quel caso usi jQueryinvece di $. In realtà, $è solo una scorciatoia per jQuery.


2
@Paolo: non so esattamente cosa intendi. (Suppongo che il mio in precedenza fosse accettato). Beh, almeno pensavo che il mio fosse del tutto corretto. Questo include un po 'di informazioni accessorie, ma non sono sicuro che giustifichi il "molto" ...
Noldorin,

1
@Noldorin: l'informazione accessoria è una buona cosa. La tua domanda non aveva fatto assolutamente menzione del motivo per cui $ è stato utilizzato, del motivo per cui potrebbe essere utilizzato e del fatto che jQuery è solo una delle molte librerie che lo utilizzano. Avere come risposta accettata significa che è la migliore risposta possibile per una domanda, e non lo era.
Paolo Bergantino,

+1 È innanzitutto un identificatore JavaScript valido e spesso utilizzato dai framework JavaScript come secondo alias.
Gumbo,

@Paolo: spesso sì. Non vi era tuttavia alcuna indicazione che l'OP volesse sapere al riguardo. Anche una risposta diretta è una buona cosa. :) Detto questo, sarei ancora d'accordo che questa sia una risposta migliore. Il mio unico cavillo era con l'enfasi che stavi ponendo su un punto specifico.
Noldorin,

2
A proposito, ho fornito un po 'di storia dietro la funzione $ nel mio post qui: stackoverflow.com/questions/1122690/jquery-and-questions/…
SolutionYogi

44

Da un'altra risposta :

Un po 'di storia

Ricorda, non c'è nulla di intrinsecamente speciale $. È un nome variabile come un altro. In passato, le persone scrivevano codice usando document.getElementById. Poiché JavaScript fa distinzione tra maiuscole e minuscole, era normale commettere un errore durante la scrittura document.getElementById. Dovrei capitale 'b'di 'by'? Dovrei capitale 'i'di Id?te ottenere la deriva. Poiché le funzioni sono cittadini di prima classe in JavaScript, puoi sempre farlo:

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

Quando è arrivata la libreria Prototype, hanno chiamato la loro funzione, che ottiene gli elementi DOM, come '$'. Quasi tutte le librerie JavaScript hanno copiato questa idea. Prototype ha anche introdotto una $$funzione per selezionare gli elementi usando il selettore CSS.

jQuery ha anche adattato la $funzione, ma ampliata per far sì che accetti tutti i tipi di "selettori" per ottenere gli elementi desiderati. Ora, se stai già utilizzando Prototype nel tuo progetto e desideri includere jQuery, avrai dei problemi, come '$'potrebbe riferirsi all'implementazione di Prototype O all'implementazione di jQuery. Ecco perché jQuery ha l'opzione noConflict in modo che tu possa includere jQuery nel tuo progetto che utilizza Prototype e migra lentamente il tuo codice. Penso che questa sia stata una mossa brillante da parte di John! :)


10
var $ = document.getElementById;non funziona in Firefox o Google Chrome. Dovresti usare function $(id) { return document.getElementById(id); }invece. Vedere stackoverflow.com/questions/1007340 per ulteriori informazioni.
Grant Wagner,

Non lo sapevo, grazie Grant. Posso confermare che questo funzionava in IE6 e Firefox 2 perché ho usato spesso questa tecnica. Aggiornerò il mio post principale.
SolutionYogi,

42

Questo è molto probabilmente il codice jQuery (più precisamente, JavaScript che utilizza la libreria jQuery).

La $rappresenta la funzione di jQuery , ed è in realtà un alias scorciatoia per jQuery. (A differenza della maggior parte delle lingue, il $simbolo non è riservato e può essere utilizzato come nome di una variabile.) In genere viene utilizzato come selettore (ovvero una funzione che restituisce un insieme di elementi trovati nel DOM).


3
Dovresti aggiungere che $ è proprio come x, potrebbe essere qualsiasi cosa tu gli assegni
hasen July

Cosa significa questo pezzo di codice: $ input.prop ('type') == 'radio';
OK Dammi,

21

Come dicono tutte le altre risposte; può essere quasi tutto ma di solito è "JQuery".

Tuttavia, in ES6 è un operatore di interpolazione di stringhe in un modello "letterale", ad es.

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) ;

risultato:

Ci sono così tante nuove idee in questi giorni !!


2
Questa è una risposta utile! Era quello che cercavo da quando sapevo che non avevamo jQuery o altre librerie. È fondamentalmente un modo per stampare una variabile all'interno di una stringa più grande senza usare virgolette, segni più, ecc.
Oscar Bravo,


4

Oltre alle risposte di cui sopra, $non ha alcun significato speciale in JavaScript, è libero di essere usato nella denominazione degli oggetti. In jQuery , è semplicemente usata come alias per il jQuery oggetto e jQuery () funzione. Tuttavia, è possibile che si verifichino situazioni in cui si desidera utilizzarlo insieme a un'altra libreria JS che utilizza anche $, il che comporterebbe un conflitto di denominazione. C'è un metodo in JQuery proprio per questo motivo, jQuery.noConflict().

Ecco un esempio dai documenti di jQuery :

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

In alternativa, puoi anche usare un simile

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

Rif : https://api.jquery.com/jquery.noconflict/


3

Dalla documentazione di jQuery che descrive l' oggetto principale jQuery :

Molti sviluppatori antepongono $ al nome delle variabili che contengono oggetti jQuery per aiutare a differenziare. Non c'è nulla di magico in questa pratica: aiuta solo alcune persone a tenere traccia di ciò che contengono diverse variabili.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.