Qual è il simbolo del dollaro in Javascript, se non in jQuery


86

Ho fatto un po 'di programmazione javascript / jQuery alcuni anni fa e ho appena riavviato. All'epoca il segno del dollaro veniva utilizzato per tutte le funzionalità jQuery e, se non veniva importata alcuna libreria jQuery, il segno del dollaro non veniva definito.

Oggi ho avviato Firefox, in un file html completamente vuoto senza librerie javascript, eppure il segno del dollaro indica qualcosa. Se apro la console di Firefox e digito "$" ottengo "function()".

1) È corretto che il segno del dollaro non sia stato assegnato qualche anno fa o mi ricordo male?

2) Qual è il segno del dollaro , se non jQuery?

Risposte:


123

1) È corretto che il segno del dollaro non sia stato assegnato qualche anno fa o mi ricordo male?

È corretto e ancora vero.

2) Qual è il segno del dollaro, se non jQuery?

Firefox e Chrome implementare $, $$e molti altri come comandi di supporto. Entrambi verranno impostati $$su document.querySelectorAll()e impostati $su document.querySelectorse window.$non è stato definito.

Quindi quello che stai vedendo non è in realtà JavaScript standard, ma un aiuto nella console degli sviluppatori del tuo browser. Inoltre non è jQuery (fintanto che non sei su una pagina utilizzando jQuery). Tuttavia, il suo comportamento è vicino a quello di jQuery, riguardo al fatto che querySelector(per singole corrispondenze) e querySelectorAll(per più corrispondenze) ti dà quasi la stessa forza del selettore jQuery.


31
OK, è davvero fastidioso. Rende solo confuso perché sembra che jquery sia lì ma non puoi trovarlo da nessuna parte. Immagino che una volta che sei consapevole che sta succedendo potrebbe essere utile ma è davvero solo fonte di confusione e potrebbe mascherare i bug.
mike nelson

1
Non sono sicuro di quando sia stato adottato da altri browser, ma lo vedo disponibile anche su IE11 e Edge.
isapir

quindi come fanno le persone a sapere se è jquery? diciamo, hai importato una grande libreria che potrebbe aver incorporato qualche altra libreria, vuoi sapere se il jquery è lì. per favore aiuto.
Martian 2049

2
@ Martian2049 Penso che il vero jQuery risponderebbe a$.fn.jquery
mb21

2
@Gaspacchio Questa dovrebbe essere un'altra risposta. Tuttavia, tieni presente che $non è stato utilizzato in un modello letterale in questa domanda .
Zeta

11

Non significa nulla per l'interprete, proprio come il trattino basso

Dalla specifica ECMAScript:

Il segno del dollaro ($) e il trattino basso (_) sono consentiti ovunque in un identificatore. Il simbolo del dollaro deve essere utilizzato solo nel codice generato meccanicamente.

Puoi anche controllare JavaScript Dollar Sign ($) - A cosa serve?

Per convenzione, il simbolo del dollaro ($), il trattino basso (_) e persino alcuni caratteri ASCII possono essere utilizzati ovunque in un identificatore JavaScript (Fonte: documentazione Ecma Script (7.6 Identifiers, ECMA-262, 3a Ed.) Il dollaro sign è inteso per l'uso solo nel codice generato meccanicamente. Ciò significa che non vogliamo utilizzare il simbolo del dollaro ($) nei nostri nomi di rientri, a meno che non stiamo scrivendo un framework. Di seguito è riportato un elenco di caratteri consentiti che possono essere utilizzati ovunque in un nome identificativo:

IdentifierName ::
IdentifierStart
IdentifierName IdentifierPart
IdentifierStart ::
UnicodeLetter
$
_
UnicodeEscapeSequence
IdentifierPart ::
IdentifierStart
UnicodeCombiningMark
UnicodeDigit
UnicodeConnectorPunctuation
UnicodeEscapeSequence

MODIFICARE:-

In realtà, la funzione del segno del dollaro è diventata la scorciatoia più o meno de facto per document.getElementById().

Per confermare il mio punto, controlla questo :

$ (selettore)

Restituisce un singolo elemento che corrisponde al selettore CSS specificato. Nelle vecchie versioni di Firebug , questo era equivalente a document.getElementById .


Quel link al blog è morto ora.
Victor Zamanian,

La prima parte della risposta è irrilevante, la seconda parte è obsoleta e sbagliata nel contesto dei browser moderni.
Sebastian Simon

7

Dollar sign($) non è stato assegnato, ma alcuni browser aggiungono funzioni per usi speciali.

Come Google Chrome, se digiti $sulla console, restituirà:

function $(selector, [startNode]) { [Command Line API] }

Questa funzione assegnata per Google Chrome Developer Tool e consente di eseguire il debug più facilmente.

se digiti $('div'), restituirà qualcosa del genere:

e.fn.e.init[178]

e includi ogni divoggetto DOM in esso.

A proposito, dopo aver fatto clic con il pulsante destro del mouse per selezionare l'elemento, è possibile accedere all'ambito angular.js per tipo $scopesulla console


4

Nota che $$non è del tutto document.querySelectorAll, perché a differenza di quella funzione non restituisce un NodeList:

document.querySelectorAll("p") instanceof NodeList // true

$$("p") instanceof NodeList // false

Array.isArray($$("p")) // true

Quindi $$(selector)è davvero più simile Array.from(document.querySelectorAll(selector)). Ciò significa che metodi array come mape friends, non solo forEach, sono disponibili quando si utilizza, il $$che è effettivamente molto utile.


1

Può essere qualsiasi cosa, poiché $è un nome di variabile valido, proprio come dollar.

Da ECMAScript :

Identifier ::
IdentifierName but not ReservedWord

IdentifierName ::
IdentifierStart
IdentifierName IdentifierPart

IdentifierStart ::
UnicodeLetter
$
_ 
\ UnicodeEscapeSequence

La soluzione più semplice per vedere di cosa si tratta e dove è definito sarebbe probabilmente quella di digitare $()e inserire un punto di interruzione su questa riga.


1

Solo per completare le altre risposte qui, MooTools usa anche $come alias per document.getElementById.

Controlla se $è stato preso e verrà quindi impostato automaticamente su document.id.

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.