Dość często widzę JavaScript ze zmiennymi zaczynającymi się od znaku dolara. Kiedy / dlaczego miałbyś wybrać prefiks zmiennej w ten sposób?
(Nie pytam o $('p.foo')
składnię, którą widzisz w jQuery i innych, ale normalne zmienne, takie jak $name
i $order
)
javascript
naming-conventions
Rozpoznać
źródło
źródło
Odpowiedzi:
Bardzo częstym zastosowaniem w jQuery jest odróżnianie obiektów jQuery przechowywanych w zmiennych od innych zmiennych.
Na przykład zdefiniowałbym:
Uważam, że jest to bardzo pomocne przy pisaniu kodu jQuery i ułatwia oglądanie obiektów jQuery, które mają inny zestaw właściwości.
źródło
W 1., 2. i 3. wydaniu ECMAScript używanie nazw zmiennych z prefiksem $ było wyraźnie odradzane przez specyfikację, z wyjątkiem kontekstu kodu generowanego automatycznie:
Jednak w następnej wersji ( 5. edycja , która jest aktualna) to ograniczenie zostało zniesione, a powyższy fragment zastąpiono
Jako taki znak $ może być teraz swobodnie używany w nazwach zmiennych. Niektóre frameworki i biblioteki mają swoje własne konwencje dotyczące znaczenia symbolu, odnotowane w innych odpowiedziach tutaj.
źródło
$variable
, prawdopodobnie dzieje się tak, ponieważ zawiera cały obiekt jQuery.Jak wspomnieli inni, znak dolara ma być używany przez kod generowany mechanicznie. Konwencja ta została jednak złamana przez niektóre bardzo popularne biblioteki JavaScript. JQuery, Prototype i MS AJAX (AKA Atlas) używają tego znaku w swoich identyfikatorach (lub jako cały identyfikator).
Krótko mówiąc, możesz używać,
$
kiedy tylko chcesz. (Tłumacz nie narzeka.) Pytanie brzmi, kiedy chcesz go użyć?Ja osobiście go nie używam, ale myślę, że jego użycie jest prawidłowe. Myślę, że MS AJAX używa go do oznaczenia, że funkcja jest aliasem dla bardziej szczegółowego wywołania.
Na przykład:
To wydaje się rozsądną konwencją.
źródło
W kontekście AngularJS
$
prefiks jest używany tylko dla identyfikatorów w kodzie frameworka. Użytkownicy frameworka są pouczani, aby nie używać go we własnych identyfikatorach:Źródło: https://docs.angularjs.org/api
źródło
Byłem osobą, która zapoczątkowała tę konwencję w 2006 roku i wypromowałam ją na wczesnej liście mailingowej jQuery, więc pozwólcie, że podzielę się historią i motywacją wokół niej.
Zaakceptowana odpowiedź podaje następujący przykład:
Ale to tak naprawdę nie ilustruje tego dobrze. Nawet bez
$
, nadal mielibyśmy tutaj dwie różne nazwy zmiennychemail
iemail_field
. Tam jest mnóstwo dobrych rzeczy. Dlaczego musielibyśmy wrzucić$
jedno z imion, skoro mamy już dwa różne imiona?Właściwie nie użyłbym
email_field
tutaj z dwóch powodów:names_with_underscores
nie są idiomatycznym JavaScriptem ifield
nie mają sensu dla elementu DOM. Ale podążyłem za tym samym pomysłem.Próbowałem kilku różnych rzeczy, w tym czegoś bardzo podobnego do przykładu:
(Oczywiście obiekt jQuery może mieć więcej niż jeden element DOM, ale kod, nad którym pracowałem, miał wiele
id
selektorów, więc w tych przypadkach istniała korespondencja 1: 1).Miałem inny przypadek, w którym funkcja otrzymała element DOM jako parametr i również potrzebowała do tego obiektu jQuery:
To trochę mylące! W jednym z moich fragmentów kodu
email
znajduje się obiekt jQuery iemailElement
element DOM, ale w drugimemail
jest element DOM iemailJQ
obiekt jQuery.Nie było spójności i ciągle je mieszałem. Dodatkowo było trochę uciążliwości wymyślić dwie różne nazwy dla tej samej rzeczy: jedną dla obiektu jQuery i drugą dla pasującego elementu DOM. Poza tym
email
,emailElement
iemailJQ
, Próbowałem też inne odmiany.Potem zauważyłem wspólny wzór:
Ponieważ JavaScript traktuje
$
jak zwykłą literę nazw, a ponieważ zawsze otrzymywałem obiekt jQuery po$(whatever)
wywołaniu, wzorzec ostatecznie do mnie dotarł . Mógłbym odebrać$(...)
telefon i po prostu usunąć niektóre postacie, a to wymyśliłoby całkiem ładne imię:Strikeout nie jest idealny, ale możesz wpaść na pomysł: po usunięciu niektórych znaków obie te linie wyglądają następująco:
Wtedy zdałem sobie sprawę, że nie muszę wymyślać konwencji takiej jak
emailElement
lubemailJQ
. Wpatrywała się we mnie już ładna konwencja: wyjmij niektóre postacie z$(whatever)
rozmowy, a to się zmieni$whatever
.i:
Nie musiałem więc wymyślać dwóch różnych nazw przez cały czas, ale mogłem używać tej samej nazwy z
$
prefiksem lub bez . A$
prefiks był miłym przypomnieniem, że miałem do czynienia z obiektem jQuery:lub:
źródło
Stevo ma rację, znaczenie i użycie znaku skryptu dolara (w JavaScript i platformie jQuery, ale nie w PHP) jest całkowicie semantyczne. $ jest znakiem, który może być użyty jako część nazwy identyfikatora. Ponadto znak dolara nie jest może najbardziej „dziwną” rzeczą, jaką można spotkać w JavaScript. Oto kilka przykładów prawidłowych nazw identyfikatorów:
Wszystkie powyższe przykłady będą działać.
Spróbuj ich.
źródło
Znak $ nie ma specjalnego znaczenia dla silnika JavaScript. To po prostu kolejny prawidłowy znak w nazwie zmiennej, np. Az, AZ, _, 0-9 itp.
źródło
$
nie ma specjalnego znaczenia w JavaScript. Kropka.Ponieważ
_
na początku nazwa zmiennej jest często używana do wskazania zmiennej prywatnej (lub przynajmniej takiej, która ma pozostać prywatna), uważam, że$
wygodnie jest dodać przed własnymi krótkimi aliasami do ogólnych bibliotek kodów.Na przykład, używając jQuery, wolę używać zmiennej
$J
(zamiast po prostu$
) i używać,$P
gdy używam php.js itp.Prefiks odróżnia go wizualnie od innych zmiennych, takich jak moje własne zmienne statyczne, co uwikłuje mnie w fakt, że kod jest częścią jakiejś biblioteki lub innej i jest mniej prawdopodobne, że konflikt lub pomieszanie innych, gdy poznają konwencję.
Nie zaśmieca także kodu (ani nie wymaga dodatkowego pisania), podobnie jak w przypadku pełnej nazwy biblioteki powtarzanej w pełni.
Lubię myśleć, że jest podobny do tego, co robią klawisze modyfikujące w celu rozszerzenia możliwości pojedynczych klawiszy.
Ale to tylko moja konwencja.
źródło
Jak doświadczyłem przez ostatnie 4 lata, pozwoli to na łatwą identyfikację, czy zmienna wskazująca wartość / obiekt lub element DOM zawinięty w jQuery
w powyższym przykładzie, gdy widzę zmienną „$ dataDiv”, mogę łatwo powiedzieć, że ta zmienna wskazuje na element DOM zawinięty w jQuery (w tym przypadku jest to div). a także mogę wywoływać wszystkie metody jQuery bez ponownego zawijania obiektu, takie jak $ dataDiv.append (), $ dataDiv.html (), $ dataDiv.find () zamiast $ ($ dataDiv) .append ().
Mam nadzieję, że to może pomóc. więc w końcu chcę powiedzieć, że dobrą praktyką będzie przestrzeganie tego, ale nie będzie to obowiązkowe.
źródło
${varname}
jest tylko konwencją nazewnictwa używaną przez programistów jQuery do rozróżniania zmiennych, które przechowują elementy jQuery.Zwykły
{varname}
służy do przechowywania ogólnych rzeczy, takich jak teksty i ciągi znaków.${varname}
przechowuje elementy zwrócone z jQuery.Możesz używać zwykłego
{varname}
do przechowywania elementów jQuery, ale jak powiedziałem na początku, to odróżnia go od zwykłych zmiennych i znacznie ułatwia zrozumienie (wyobraź sobie, że mylę go dla zwykłej zmiennej i szukam wszystkiego, aby zrozumieć, co ona zawiera) .Na przykład :
Tutaj bla przechowuje zwrócony element jQuery.
Kiedy więc ktoś zobaczy
$blah
kod, zrozumie, że to nie tylko ciąg znaków lub liczba, to element jQuery.źródło
Chociaż można go po prostu użyć do prefiksu identyfikatorów, należy go użyć do wygenerowanego kodu, na przykład tokenów zastępczych w szablonie.
źródło
Zastosowania kątowe dotyczą właściwości generowanych przez środowisko. Sądzą, że podążają za (teraz nieistniejącą) wskazówką ECMA-262 3.0.
źródło
$ służy do rozróżnienia między zmiennymi wspólnymi a zmiennymi jquery w przypadku zmiennych normalnych. pozwól nam złożyć zamówienie we FLIPKART, a jeśli zamówienie jest zmienną pokazującą wynik łańcucha, wówczas jest nazywane prostym jako „zamówienie”, ale jeśli klikniemy polecenie zamówienia, obiekt zostanie zwrócony, ten obiekt będzie oznaczony przez $ jako „$ order ”, aby programista mógł wyciąć zmienne javascript i zmienne jquery w całym kodzie.
źródło
Jeśli widzisz znak dolara ($) lub podwójny znak dolara ($$) i zastanawiasz się, co to oznacza w ramach Prototypu, oto Twoja odpowiedź:
Źródło:
http://www.prototypejs.org/api/utility/dollar-dollar
źródło
Powód, dla którego czasami używam konwencji nazw php ze zmiennymi javascript: Podczas sprawdzania poprawności danych wejściowych chcę uruchamiać dokładnie te same algorytmy zarówno po stronie klienta, jak i po stronie serwera. Naprawdę chcę, aby obie strony kodu wyglądały tak podobnie, jak to możliwe, aby uprościć konserwację. Użycie znaków dolara w nazwach zmiennych ułatwia to.
(Ponadto niektóre rozsądne funkcje pomocnicze pomagają upodabniać kod, np. Owijanie odnośników wartości wejściowych, wersje strlen, substr itp. Inne niż OO. Mimo to wymaga to ręcznego dostosowania).
źródło
Prawidłowy shuold identyfikatora JavaScript musi zaczynać się od litery, podkreślenia (_) lub znaku dolara ($); kolejne znaki mogą być również cyframi (0–9). Ponieważ JavaScript rozróżnia małe i duże litery, litery zawierają znaki od „A” do „Z” (wielkie litery) oraz znaki „a” do „z” (małe litery).
Szczegóły:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Grammar_and_types#Variables
źródło