JQuery değilse, Javascript'teki dolar işareti nedir


86

Birkaç yıl önce biraz javascript / jQuery programlama yaptım ve yeniden başladım. O zamanlar dolar işareti tüm jQuery işlevselliği için kullanılıyordu ve jQuery kitaplığı içe aktarılmamışsa dolar işareti tanımlanmıyordu.

Bugün Firefox'u javascript kitaplıkları içermeyen tamamen boş bir html dosyasında başlattım ve yine de dolar işareti bir şeyi gösteriyor. Firefox konsolunu açıp '$' yazarsam"function()" .

1) Birkaç yıl önce dolar işaretinin atanmamış olması doğru mu yoksa yanlış mı hatırlıyorum?

2) jQuery değilse dolar işareti nedir ?

Yanıtlar:


123

1) Birkaç yıl önce dolar işaretinin atanmamış olması doğru mu yoksa yanlış mı hatırlıyorum?

Bu doğru ve hala doğru.

2) jQuery değilse dolar işareti nedir?

Firefox ve Chrome uygulamak $, $$ve yardımcı komutları gibi birçok diğerleri. Hem koyacaktır $$için document.querySelectorAll()ve seti $için document.querySelectorise window.$tanımlanmamıştır.

Yani gördüğünüz şey aslında standart JavaScript değil, tarayıcınızın geliştirici konsolunda bir yardımcı. Ayrıca jQuery değildir (jQuery kullanan bir sayfada olmadığınız sürece). Ancak, 's davranış yakın birine olduğu jQuerykonusunda, o querySelector(tek eşleşmeler için) ve querySelectorAllsize jQuery seçici olarak hemen hemen aynı güç vermek (birden eşleşmeler için).


31
Tamam, bu gerçekten can sıkıcı. Sadece kafa karıştırıcı hale getiriyor çünkü jquery varmış gibi görünüyor ama hiçbir yerde bulamıyorsunuz. Sanırım bunun farkına vardığınızda kullanışlı olabilir, ancak gerçekten kafa karıştırıcıdır ve hataları maskeleyebilir.
mike nelson

1
Diğer tarayıcılar tarafından ne zaman benimsendiğinden emin değilim, ancak IE11 ve Edge'de de mevcut olduğunu görüyorum.
isapir

peki insanlar jquery olup olmadığını nasıl anlar? örneğin, birkaç başka kitaplık içeren büyük bir kitaplık içe aktardınız, jquery'nin orada olup olmadığını bilmek istersiniz. lütfen yardım et.
Martian2049

2
@ Martian2049 Gerçek jQuery'nin yanıt vereceğini düşünüyorum$.fn.jquery
mb21

2
@Gaspacchio Bu başka bir cevap olmalı. Ancak, bunun bu soruda$ bir şablon değişmezinde kullanılmadığını unutmayın .
Zeta

11

Tercüman için alt çizgi gibi hiçbir şey ifade etmiyor

ECMAScript spesifikasyonundan:

Dolar işareti ($) ve alt çizgiye (_) bir tanımlayıcının herhangi bir yerinde izin verilir. Dolar işareti yalnızca mekanik olarak oluşturulan kodda kullanılmak üzere tasarlanmıştır.

JavaScript Dolar İşareti ($) bölümüne de bakabilirsiniz - Ne için?

Geleneksel olarak, dolar işareti ($), alt çizgi (_) ve hatta bazı ASCII karakterlerinin bir JavaScript tanımlayıcısında herhangi bir yerde kullanılmasına izin verilir (Kaynak: Ecma Script belgeleri (7.6 Tanımlayıcılar, ECMA-262, 3. Baskı) dolar işaretinin yalnızca mekanik olarak oluşturulan kodda kullanılması amaçlanmıştır. Bu, bir çerçeve yazmadığımız sürece, girinti adlarımızda dolar işaretini ($) kullanmak istemediğimiz anlamına gelir. Aşağıda, kullanılabilecek izin verilen karakterlerin bir listesi verilmiştir. tanımlayıcı adının herhangi bir yerinde:

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

DÜZENLE:-

Aslında dolar işareti işlevi, aşağı yukarı fiili kısayol haline geldi document.getElementById().

Benim açımdan kontrol onaylamak için bu :

$ (seçici)

Belirtilen CSS seçiciyle eşleşen tek bir öğe döndürür. Eski Firebug sürümlerinde bu, document.getElementById ile eşdeğerdi .


Bu blog bağlantısı artık öldü.
Victor Zamanian

Cevabın ilk kısmı alakasız, ikinci kısım modası geçmiş ve modern tarayıcılar bağlamında yanlış.
Sebastian Simon

7

Dollar sign($) atanmamış, ancak bazı tarayıcılar özel kullanım için işlev ekliyor.

Google Chrome gibi, $konsola yazarsanız , şunu geri döndürür:

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

Bu işlev, Google Chrome Geliştirici Aracı için atanır ve daha kolay hata ayıklama sağlar.

yazarsanız şöyle bir $('div')şey döndürür:

e.fn.e.init[178]

ve her şeyi dahil et div DOM nesnesini edin.

BTW, öğeyi seçmek için farede sağ tuşa tıkladıktan sonra $scope, konsolda türe göre angular.js kapsamına erişebilirsiniz.


4

Bunun $$tam olmadığını unutmayın document.querySelectorAll, çünkü bu işlevin aksine bir NodeList:

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

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

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

Yani $$(selector)gerçekten daha çok benziyor Array.from(document.querySelectorAll(selector)). Bu map, sadece ve arkadaşlar gibi dizi yöntemlerinin forEachkullanılabilir olduğu anlamına gelir, $$ki bu aslında oldukça kullanışlıdır.


1

$Geçerli bir değişken adı gibi herhangi bir şey olabilir , tıpkı dollar.

Nereden ECMAScript :

Identifier ::
IdentifierName but not ReservedWord

IdentifierName ::
IdentifierStart
IdentifierName IdentifierPart

IdentifierStart ::
UnicodeLetter
$
_ 
\ UnicodeEscapeSequence

Ne olduğunu ve nerede tanımlandığını görmenin en basit çözümü, muhtemelen bu satıra bir kesme noktası yazmak $()ve koymak olacaktır .


1

MooTools, buradaki diğer cevapları tamamlamak için ayrıca $takma ad olarak da kullanır .document.getElementById .

Alınıp $alınmadığını kontrol eder ve sonra varsayılan olarak alacaktır document.id.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.