ทำไม JQuery ถึงมีเครื่องหมายดอลลาร์อยู่ทุกที่?


112

ฉันกำลังทำโปรเจ็กต์ที่มี JQuery อยู่ในนั้นค่อนข้างมาก JQuery มีเครื่องหมาย $ มากมายทุกที่เช่น

$(document).ready(function () {
        $('input[type=file]').wl_File({
            url: '/Admin/PolicyInventory/UploadDocuments',
            onFileError: function (error, fileobj) {
                $.msg('file is not allowed: ' + fileobj.name, {
                    header: error.msg + ' Error ',
                    live: 10000
                });
            }
        });
...

คำถามของฉันคือเครื่องหมายดอลลาร์นี้หมายถึงอะไร? เหตุใดจึงใช้ทั่วทุกสถานที่และฉันจะเข้าใจและตีความได้อย่างไร มันทำให้ฉันนึกถึงวันที่น่ากลัวเมื่อฉันเรียน Scheme ที่มหาวิทยาลัยและต้องใส่วงเล็บไว้ทุกที่โดยไม่รู้ว่าทำไมฉันถึงทำมัน


19
$เป็นนามแฝงสำหรับวัตถุ jQuery ๆ
ลี

56
เพื่อว้าวและสับสน
Rudu

2
stackoverflow.com/questions/205853/… มีทุกสิ่งที่คุณต้องการรู้
smokestudley


7
var $ = jQuery
Adam

คำตอบ:


167

$jQueryเป็นเพียงทางลัดสำหรับ แนวคิดก็คือทุกอย่างจะทำด้วยสัญลักษณ์สากลอันเดียว (เนื่องจากเนมสเปซทั่วโลกมีผู้ใช้งานหนาแน่น) jQueryแต่คุณสามารถใช้$(เพราะสั้นกว่า) ได้หากต้องการ:

// These are the same barring your using noConflict (more below)
var divs = $("div");       // Find all divs
var divs = jQuery("div");  // Also find all divs, because
console.log($ === jQuery); // "true"

หากคุณไม่ต้องการใช้นามแฝงคุณก็ไม่จำเป็นต้องทำ และถ้าคุณ$ไม่ต้องการเป็นนามแฝงjQueryคุณสามารถใช้noConflictและไลบรารีจะคืนค่า$เป็นอะไรก็ได้ก่อนที่ jQuery จะเข้ายึดครอง (มีประโยชน์ถ้าคุณใช้ Prototype หรือ MooTools ด้วย)


12

เป็นเพียงอักขระที่ใช้สะดวกพิมพ์สั้นและอ่านง่ายกว่า "jQuery"

ไม่มีอะไรพิเศษยกเว้นว่าโดยปกติแล้วจะไม่ใช้เพื่อเริ่มต้นตัวแปรหรือชื่อฟังก์ชันซึ่งจะช่วยลดความเสี่ยงหรือการชนกันของชื่อ


1
เว้นแต่คุณใช้ภาษาอื่นเช่น PHP ในการเติม JavaScript ในเว็บไซต์ของคุณใช้ HTMLdocs จุดที่ว่าเครื่องหมายดอลลาร์ทำหน้าที่วัตถุประสงค์เพิ่มเติมของการทำลายทุกอย่างตั้งแต่ PHP ไม่ใช้เครื่องหมายดอลลาร์ที่จะเริ่มต้นตัวแปรทั้งหมด (เหตุผลที่ว่าหากคุณแชร์สคริปต์ jQuery สำหรับการใช้งานเครือข่ายแบบกว้างควรใช้ jQuery แทน $)
liljoshu

12

$jQueryเข้าสู่ระบบเป็นนามแฝงสำหรับ เวอร์ชันสั้น ๆjQueryกลไกการเขียนน้อย

ตัวอย่างเช่น: (ใน jQuery มันซับซ้อนกว่านี้)

var yourFunction = function() {
    alert('a function');
}

window.Myf = yourFunction;

ตอนนี้คุณสามารถโทรหาyourFunction:

Myf(); // definitely a short syntax

11

ความสามารถในการเขียนและประสิทธิภาพ


เมื่อเราทำงานกับไลบรารีหรือภาษาโปรแกรมเราควรใส่ใจกับกฎความสามารถในการเขียน ขอบคุณ jQuery พวกเขาใช้ตัวเลือกมากมายแล้ว คุณสามารถใช้$หรือคุณสามารถใช้jQueryหรือคุณสามารถใช้_

(function (_) {
    _("#wow").click()
})(jQuery);

หรือบางทีคุณอาจทำการเปลี่ยนแปลงที่แปลกใหม่ตัวระบุจาวาสคริปต์เป็น Unicode เพื่อให้คุณสามารถใช้ได้ Ω

(function (Ω) {
    Ω("#wow").click()
})(jQuery);

แต่แนวคิดหลักที่อยู่เบื้องหลังการกดหนึ่งครั้งบนแป้นพิมพ์จะดีกว่าการพิมพ์ jQuery


ในอีกด้านหนึ่งเรามีประสิทธิภาพ ... ฉันเพิ่งสุ่มเปิดหนึ่งในโครงการของฉันและค้นหา$ฉันใช้ 54 $ในไฟล์จาวาสคริปต์เดียว

$ เป็นไบต์

jQuery คือ 6 ไบต์

ความแตกต่างมีค่ามาก 54 * 5 = 220 ไบต์


หากคุณโหวตลบโปรดอย่าเห็นแก่ตัวที่จะบอกว่าฉันทำผิดอะไร เพื่อที่ฉันจะได้แก้ไขข้อผิดพลาดได้หากมี!
Ahmet Can Güven

220 ไบต์ไม่ได้สร้างความแตกต่างอย่างมีนัยสำคัญเท่าที่ความเร็วจะไป นอกจากนี้มันจะไม่ใช้เพียง 220 ไบต์เนื่องจากโค้ดต้องผ่านเครื่องยนต์ V8 JS (หรือเอนจิ้นอื่น ๆ ) และเราไม่รู้ว่ามันจัดสรรให้กับสิ่งต่างๆได้มากแค่ไหน
Garrett Smith

@GarrettSmith ฉันกำลังพูดถึงต้นทุนเครือข่าย การดำเนินการของ $ หรือ jQuery แทบจะเหมือนกัน
Ahmet Can Güven

6

Google คือเพื่อนของคุณ: $ sign JQuery

Dollar Sign เป็นเพียงนามแฝงของ JQuery

jQuery(document).ready(function(){});

หรือ

$(document).ready(function(){});

4
FYI: google.com.pk/…ดูเหมือนว่าจะให้ผลการค้นหาเดียวกันซึ่งหมายความว่า Google ไม่อนุญาตให้ใช้ $ เป็นข้อความค้นหา
จริงๆ

5

ใน javascript $(อักขระดอลลาร์เดียว) เป็นชื่อตัวแปรที่ถูกต้อง หลายเฟรมเวิร์กซึ่ง jQuery ได้นำมาใช้เป็นคำพ้องความหมายของอ็อบเจ็กต์ที่มีวิธีอำนวยความสะดวกระดับบนสุดที่เฟรมเวิร์กจัดเตรียมไว้ให้


1

เครื่องหมาย $ ถูกใช้เป็นนามแฝงของ Jquery แทนที่จะใช้ jquery.hide ให้ jquery แสดงทุกที่ที่เราสามารถใช้นามแฝง $ ($ .hide) เนื่องจากเราใช้คำนี้หลายครั้ง 'Jquery' ไม่ใช่วิธีที่สะดวกดังนั้นเราจึงใช้นามแฝง $ หากเราต้องการเปลี่ยนแปลงเราสามารถเปลี่ยนได้โดยวิธี noConflict var Sample = $. noConflict ()

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.