ความหมายของเครื่องหมาย“ $” ใน JavaScript คืออะไร


167

ในโค้ด JavaScript ต่อไปนี้จะมีเครื่องหมายดอลลาร์ ( $) มันหมายความว่าอะไร?

$(window).bind('load', function() {
    $('img.protect').protectImage();
});

1
ดูเพิ่มเติมที่: stackoverflow.com/a/553734/43615 (ทำไมตัวแปร JavaScript จะเริ่มต้นด้วยเครื่องหมายดอลลาร์?)
Thomas Tempelmann

คำตอบ:


284

ตัวอย่างโค้ดของคุณดูเหมือนว่าเป็นวิธีการอ้างอิงจากหนึ่งในห้องสมุด JavaScript ยอดนิยม (jQuery, ProtoType, mooTools และอื่น ๆ )

ไม่มีอะไรลึกลับเกี่ยวกับการใช้งาน$JavaScript $เป็นเพียงตัวระบุ JavaScript ที่ถูกต้อง

JavaScript ช่วยให้ตัวอักษรบนและล่างตัวเลขและและ$ ตั้งใจที่จะนำมาใช้สำหรับตัวแปรเครื่องสร้าง (เช่น)_$$0001

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


2
@ เปาโล: ไม่แน่ใจว่าคุณหมายถึงอะไร (ก่อนหน้านี้ฉันเป็นคนที่ได้รับการยอมรับฉันถือว่า.) ดีฉันคิดว่าของฉันถูกต้องอย่างน้อยที่สุด ซึ่งรวมถึงบิตของข้อมูลเสริม แต่ฉันไม่แน่ใจว่ามัน justifies ว่า "มาก" ...
Noldorin

1
@Noldorin: ข้อมูลเสริมเป็นสิ่งที่ดี คำถามของคุณไม่ได้พูดถึงเหตุผลที่ใช้ $ เหตุผลที่สามารถใช้และความจริง jQuery เป็นเพียงหนึ่งในหลาย ๆ ไลบรารีที่ใช้ การมีเป็นคำตอบที่ยอมรับหมายความว่าเป็นคำตอบที่ดีที่สุดสำหรับคำถามและไม่ใช่
เปาโล Bergantino

+1 เป็นตัวระบุ JavaScript ที่ถูกต้องเป็นอันดับแรกและมักใช้โดยเฟรมเวิร์ก JavaScript เป็นนามแฝงที่สอง
Gumbo

@ เปาโล: บ่อยครั้งใช่ อย่างไรก็ตามไม่มีข้อบ่งชี้ว่า OP ต้องการทราบเกี่ยวกับเรื่องนี้ คำตอบโดยตรงก็เป็นสิ่งที่ดีเช่นกัน :) โดยบอกว่าฉันยังคงเห็นด้วยว่านี่เป็นคำตอบที่ดีกว่า เล่นลิ้นเพียงอย่างเดียวของฉันคือการเน้นที่คุณวางในจุดที่เฉพาะเจาะจง
Noldorin

2
BTW ฉันให้ประวัติเล็กน้อยหลังฟังก์ชัน $ ในโพสต์ของฉันที่นี่: stackoverflow.com/questions/1122690/jquery-and-questions/…
SolutionYogi

44

จากคำตอบอื่น :

ประวัติเล็กน้อย

$โปรดจำไว้ว่ามีอะไรพิเศษเกี่ยวกับเนื้อแท้ มันเป็นชื่อตัวแปรเช่นเดียวกับคนอื่น ๆ ในวันก่อนหน้าคนใช้ในการเขียนรหัสโดยใช้ document.getElementById เพราะเป็นกรณี JavaScript, document.getElementByIdมันเป็นเรื่องปกติที่จะทำผิดพลาดในขณะที่เขียน ฉันควรเมืองหลวง'b'ของ'by'? ฉันควรเมืองหลวง'i'ของId?คุณได้รับการเลื่อนลอย เนื่องจากฟังก์ชั่นเป็นพลเมืองชั้นหนึ่งใน JavaScript คุณสามารถทำสิ่งนี้ได้เสมอ:

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

เมื่อห้องสมุดต้นแบบมาถึงพวกเขาตั้งชื่อฟังก์ชั่นของพวกเขาซึ่งได้รับองค์ประกอบ DOM '$'ที่เป็น ไลบรารี JavaScript เกือบทั้งหมดคัดลอกแนวคิดนี้ ต้นแบบยังได้แนะนำ$$ฟังก์ชั่นเพื่อเลือกองค์ประกอบโดยใช้ CSS selector

jQuery ได้ดัดแปลง$ฟังก์ชั่น แต่ขยายเพื่อให้ยอมรับ 'selectors' ทุกชนิดเพื่อรับองค์ประกอบที่คุณต้องการ ตอนนี้ถ้าคุณใช้ Prototype ในโครงการของคุณอยู่แล้วและต้องการรวม jQuery คุณจะมีปัญหาตามที่'$'อ้างถึงการนำไปปฏิบัติของ Prototype หรือการนำ jQuery มาใช้ นั่นคือเหตุผลที่ jQuery มีตัวเลือก noConflict เพื่อให้คุณสามารถรวม jQuery ในโครงการของคุณซึ่งใช้ Prototype และโยกย้ายรหัสของคุณช้าๆ ฉันคิดว่านี่เป็นการเคลื่อนไหวที่ยอดเยี่ยมในส่วนของ John! :)


10
var $ = document.getElementById;ไม่ทำงานใน Firefox หรือ Google Chrome คุณควรใช้function $(id) { return document.getElementById(id); }แทน ดูstackoverflow.com/questions/1007340สำหรับข้อมูลเพิ่มเติม
Grant Wagner

ฉันไม่รู้ว่าขอบคุณแกรนท์ ฉันสามารถยืนยันได้ว่าสิ่งนี้เคยทำงานใน IE6 เช่นเดียวกับ Firefox 2 เพราะฉันใช้เทคนิคนี้บ่อยครั้ง ฉันจะอัปเดตโพสต์หลักของฉัน
SolutionYogi

42

นั่นคือรหัสjQueryที่เป็นไปได้มากที่สุด(อย่างแม่นยำยิ่งขึ้น JavaScript ใช้ไลบรารี jQuery)

$หมายถึงฟังก์ชั่น jQueryjQueryและเป็นจริงนามแฝงชวเลข (ไม่เหมือนในภาษาส่วนใหญ่$สัญลักษณ์ไม่ได้ถูกสงวนไว้และอาจใช้เป็นชื่อตัวแปร) โดยทั่วไปจะใช้เป็นตัวเลือก (เช่นฟังก์ชันที่ส่งคืนชุดขององค์ประกอบที่พบใน DOM)


3
คุณควรเพิ่มที่ $ เป็นเหมือน x มันอาจจะเป็นสิ่งที่คุณกำหนดให้กับมัน
Hasen

โค้ดนี้มีความหมายว่าอะไร: $ input.prop ('type') == 'radio';
OKGimmeMoney

21

ในขณะที่คำตอบอื่น ๆ พูด; สามารถเป็นได้เกือบทุกอย่าง แต่มักจะ "JQuery"

อย่างไรก็ตามใน ES6 เป็นตัวดำเนินการแก้ไขสตริงในแม่แบบ "ตัวอักษร"เช่น

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

ผลลัพธ์:

วันนี้มีความคิดใหม่ ๆ มากมาย !!


2
นี่คือคำตอบที่มีประโยชน์! มันเป็นสิ่งที่ฉันกำลังมองหาเพราะฉันรู้ว่าเราไม่มี jQuery หรือห้องสมุดอื่น ๆ มันเป็นวิธีการพิมพ์ตัวแปรภายในสตริงที่มีขนาดใหญ่โดยไม่ต้องใช้เครื่องหมายคำพูดและเครื่องหมายบวกอื่น ๆ
Oscar Bravo


4

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

นี่คือตัวอย่างจากเอกสารของjQuery :

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

หรือคุณสามารถใช้สิ่งนี้

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

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


3

จากเอกสาร jQuery ที่อธิบายถึงjQuery Core Object :

นักพัฒนาหลายคนนำหน้า $ ไปที่ชื่อของตัวแปรที่มีวัตถุ jQuery เพื่อช่วยแยกความแตกต่าง ไม่มีอะไรมหัศจรรย์เกี่ยวกับการฝึกฝนนี้ - มันช่วยให้บางคนติดตามว่ามีตัวแปรที่แตกต่างกันอย่างไร

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