JavaScript'te “$” oturumunun anlamı nedir


Yanıtlar:


284

Kod snippet'iniz, popüler JavaScript kitaplıklarından birinden (jQuery, ProtoType, mooTools vb.) Referans yöntemleri gibi görünüyor.

$JavaScript'te kullanımı konusunda gizemli bir şey yok . $yalnızca geçerli bir JavaScript tanımlayıcısıdır.

JavaScript, büyük ve küçük harflere, sayılara ve $ve izin verir _. Bunun $makine tarafından oluşturulan değişkenler (örneğin $0001) için kullanılması amaçlanmıştır .

Prototip, jQuery ve çoğu javascript kitaplığı $birincil temel nesne (veya işlev) olarak kullanır. Çoğu, $onu kullanan başka bir kütüphane ile kullanılabilmesi için vazgeçmenin bir yoluna sahiptir . Bu durumda jQueryyerine kullanın $. Aslında, $sadece bir kısayoldur jQuery.


2
@Paolo: Ne demek istediğinden tam olarak emin değilim. (Benimkinden daha önce kabul edilen, sanırım.) En azından benimkinin tamamen doğru olduğunu düşündüm. Bu biraz yardımcı bilgiler içerir, ancak "çok" haklı olduğundan emin değilim ...
Noldorin

1
@Noldorin: yardımcı bilgi iyi bir şeydir. Sorunuz $ 'ın kullanılma nedeninden, neden kullanılabileceğinden ve jQuery'nin onu kullanan birçok kütüphaneden sadece biri olduğundan kesinlikle bahsetmemişti. Kabul edilmiş bir cevap olması, bir soru için mümkün olan en iyi cevap olduğu anlamına gelir ve değildi.
Paolo Bergantino

+1 İlk olarak geçerli bir JavaScript tanımlayıcısıdır ve genellikle JavaScript çerçeveleri tarafından takma ad olarak kullanılır.
Gumbo

@Paolo: Genellikle, evet. Ancak OP'nin bunu bilmek istediğine dair hiçbir belirti yoktu. Doğrudan bir cevap da iyi bir şeydir. :) Bunu söyleyerek, bunun daha iyi bir cevap olduğunu kabul ediyorum. Benim tek sorunum, belirli bir noktaya vurguluydu.
Noldorin

2
BTW, buradaki
SolutionYogi

44

Gönderen başka bir yanıt :

Biraz tarih

Unutmayın, doğası gereği özel bir şey yoktur $. Diğerleri gibi değişken bir isimdir. Daha önceki günlerde, insanlar document.getElementById kullanarak kod yazarlardı. JavaScript büyük / küçük harfe duyarlı olduğundan, yazarken hata yapmak normaldi document.getElementById. Meli ben sermaye 'b'arasında 'by'? Meli ben sermaye 'i'arasında Id?You drift olsun. JavaScript'te işlevler birinci sınıf vatandaşlar olduğundan, bunu her zaman yapabilirsiniz:

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

Prototip kütüphanesi geldiğinde, DOM öğelerini alan işlevlerini olarak adlandırdılar '$'. Hemen hemen tüm JavaScript kütüphaneleri bu fikri kopyaladı. Prototip ayrıca $$CSS seçiciyi kullanarak öğeleri seçmek için bir işlev de getirdi .

jQuery $işlevi de uyarladı, ancak istediğiniz öğeleri almak için her türlü 'seçiciyi' kabul edecek şekilde genişletildi. Şimdi, projenizde zaten Prototip kullanıyorsanız ve jQuery'yi eklemek istiyorsanız, '$'Prototip'in uygulanmasına VEYA jQuery'nin uygulanmasına atıfta bulunabileceğiniz için sorun yaşayacaksınız . Bu nedenle jQuery, Prototip kullanan ve kodunuzu yavaşça geçiren projenize jQuery'yi dahil edebilmeniz için noConflict seçeneğine sahiptir. Bence bu John adına harika bir hamle oldu! :)


10
var $ = document.getElementById;Firefox veya Google Chrome'da çalışmaz. Bunun function $(id) { return document.getElementById(id); }yerine kullanmalısınız . Daha fazla bilgi için stackoverflow.com/questions/1007340 adresine bakın .
Grant Wagner

Bunu bilmiyordum, teşekkürler Grant. Firefox 2'nin yanı sıra IE6'da da çalıştığını doğrulayabilirim, çünkü bu tekniği sık sık kullandım. Ana yazımı güncelleyeceğim.
SolutionYogi

42

Bu büyük olasılıkla jQuery kodudur (daha doğrusu jQuery kitaplığını kullanan JavaScript).

$Temsil jQuery İşlevini ve aslında bir kısaltmadır diğer adıdır jQuery. (Çoğu dilden farklı olarak, $sembol ayrılmış değildir ve değişken adı olarak kullanılabilir.) Genellikle bir seçici olarak kullanılır (yani DOM'da bulunan bir dizi öğeyi döndüren bir işlev).


3
$
In

Bu kod parçası ne anlama geliyor: $ input.prop ('type') == 'radio';
OKGimmeMoney

21

Diğer tüm cevapların dediği gibi; neredeyse her şey olabilir ama genellikle "JQuery" dir.

Bununla birlikte, ES6'da bir şablonda "değişmez" ör.

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

sonuç:

Bugünlerde pek çok yeni fikir var !!


2
Bu yararlı bir cevap! JQuery veya başka bir kütüphanemiz olmadığını bildiğimden beri aradığım şey buydu. Temelde, bir değişkeni tırnak işaretleri ve artı işaretleri vb. Kullanmadan daha büyük bir dizenin içine basmanın bir yoludur.
Oscar Bravo


4

Yukarıdaki cevaplara ek olarak, $javascript'te özel bir anlamı yoktur, nesne adlandırmada kullanmak ücretsizdir. Gelen jQuery , sadece bir takma ad olarak kullanılan JQuery nesne ve jQuery () işlev. Ancak, bir adlandırma çakışmasıyla sonuçlanacak $ kullanan başka bir JS kitaplığıyla birlikte kullanmak istediğiniz durumlarla karşılaşabilirsiniz. JQuery'de sadece bu nedenle bir yöntem var jQuery.noConflict().

İşte jQuery doc'ın bir örneği :

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

Alternatif olarak, buna benzer bir

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

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


3

JQuery Çekirdek Nesnesini açıklayan jQuery belgelerinden :

Birçok geliştirici, ayırt etmeye yardımcı olması için jQuery nesneleri içeren değişkenlerin adına $ eki ekler. Bu uygulamada sihir yoktur - sadece bazı insanların farklı değişkenlerin neler içerdiğini izlemesine yardımcı olur.

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.