รหัสที่เป็นปัญหาอยู่ที่นี่:
var $item = $(this).parent().parent().find('input');
อะไรคือจุดประสงค์ของเครื่องหมายดอลลาร์ในชื่อตัวแปรทำไมไม่รวมอยู่ในนั้น?
document.querySelector
และdocument.querySelectorAll
รหัสที่เป็นปัญหาอยู่ที่นี่:
var $item = $(this).parent().parent().find('input');
อะไรคือจุดประสงค์ของเครื่องหมายดอลลาร์ในชื่อตัวแปรทำไมไม่รวมอยู่ในนั้น?
document.querySelector
และdocument.querySelectorAll
คำตอบ:
'$' ในตัวแปรไม่มีความหมายอะไรกับล่ามเหมือนขีดล่าง
จากสิ่งที่ฉันได้เห็นคนจำนวนมากที่ใช้jQuery (ซึ่งเป็นรหัสตัวอย่างของคุณดูเหมือนว่าฉัน) มักจะนำหน้าตัวแปรที่มีวัตถุ jQuery ด้วย $ เพื่อให้พวกเขาระบุได้ง่ายและไม่ผสมกับพูดจำนวนเต็ม .
ฟังก์ชั่นเครื่องหมายดอลลาร์$()
ใน jQuery เป็นฟังก์ชั่นห้องสมุดที่ใช้บ่อยดังนั้นชื่อย่อจึงเป็นที่ต้องการ
var $=function(){}
var a=function(){}
jQuery(document).ready(function($){
... จากนั้น $ จะถูกใช้ในการใช้งานฟังก์ชั่น
$scope
$ เป็นหนึ่งในตัวละครในชื่อนั้น ราวกับว่าคุณถอดออกe
ในตอนท้าย$scope
มันจะไม่ทำงานดังนั้นการถ่ายทำ$
จะไม่ได้ผล ในกรณีที่คุณเห็นอะไรบางอย่าง$( "a" ).addClass( "test" )
เครื่องหมายดอลลาร์เป็นชื่อเต็มของสิ่งที่เป็น
ในตัวอย่างของคุณ $ ไม่มีความสำคัญเป็นพิเศษนอกจากการเป็นตัวละครของชื่อ
อย่างไรก็ตามใน ECMAScript 6 (ES6) $ อาจแสดงถึงตัวอักษรเทมเพลต
var user = 'Bob'
console.log(`We love ${user}.`); //Note backticks
// We love Bob.
เครื่องหมาย $ เป็นตัวระบุสำหรับตัวแปรและฟังก์ชั่น
นั่นมีคำอธิบายที่ชัดเจนว่าเครื่องหมายดอลลาร์นั้นมีไว้เพื่ออะไร
นี่คือคำอธิบายอื่น: http://www.vcarrer.com/2010/10/about-dollar-sign-in-javascript.html
เครื่องหมายดอลลาร์จะได้รับการปฏิบัติเช่นเดียวกับตัวอักษรปกติหรือขีดล่าง ( _
) ไม่มีความสำคัญเป็นพิเศษต่อล่าม
แตกต่างจากภาษาที่คล้ายกันมากตัวระบุ (เช่นชื่อทำงานและตัวแปร) ใน Javascript สามารถมีตัวอักษรที่ไม่เพียง แต่ตัวเลขและขีด แต่ยังสามารถมีสัญญาณดอลลาร์ พวกเขาจะได้รับอนุญาตให้เริ่มต้นด้วยเครื่องหมายดอลลาร์หรือประกอบด้วยเพียงเครื่องหมายดอลลาร์และไม่มีอะไรอื่น
ดังนั้นจึง$
เป็นฟังก์ชั่นที่ถูกต้องหรือชื่อตัวแปรใน Javascript
ทำไมคุณต้องการให้เครื่องหมายดอลลาร์ในตัวระบุ
ไวยากรณ์ไม่ได้บังคับใช้การใช้งานของเครื่องหมายดอลลาร์ในตัวระบุดังนั้นมันขึ้นอยู่กับคุณว่าคุณต้องการใช้มันอย่างไร ในอดีตมักจะแนะนำให้เริ่มตัวระบุด้วยเครื่องหมายดอลลาร์ในรหัสที่สร้างขึ้นเท่านั้น - นั่นคือรหัสที่สร้างไม่ได้ด้วยมือ แต่โดยตัวสร้างโค้ด
อย่างไรก็ตามในตัวอย่างของคุณสิ่งนี้ไม่ได้เกิดขึ้น ดูเหมือนว่าใครบางคนเพิ่งใส่เครื่องหมายดอลลาร์ที่จุดเริ่มต้นเพื่อความสนุกสนาน - บางทีพวกเขาเป็นโปรแกรมเมอร์ PHP ที่ทำมันออกมาจากนิสัยหรือบางสิ่งบางอย่าง ใน PHP ชื่อตัวแปรทั้งหมดจะต้องมีเครื่องหมายดอลลาร์อยู่ข้างหน้า
มีความหมายทั่วไปสำหรับเครื่องหมายดอลลาร์ในล่ามในปัจจุบันก็คือ: วัตถุ jQuery ที่มีชื่อเฉพาะประกอบด้วยเครื่องหมายดอลลาร์เดียว ( $
) นี่เป็นข้อตกลงที่ยืมมาจากเฟรมเวิร์ก Javascript ก่อนหน้านี้เช่น Prototype และหากใช้ jQuery ร่วมกับเฟรมเวิร์กอื่น ๆ จะมีการปะทะกันของชื่อเพราะทั้งคู่จะใช้ชื่อ$
(jQuery สามารถกำหนดค่าให้ใช้ชื่ออื่นสำหรับวัตถุทั่วโลก) . ไม่มีอะไรพิเศษใน Javascript ที่อนุญาตให้ jQuery ใช้เครื่องหมายดอลลาร์เดียวเป็นชื่อวัตถุ ดังกล่าวข้างต้นเป็นเพียงชื่ออื่นที่ถูกต้องเท่านั้น
var $j = jQuery.noConflict();
นี้ $ j เป็นวัตถุ jQuery
เครื่องหมายดอลลาร์ใช้ในecmascript 2015-2016 เป็น 'ตัวอักษรเทมเพลต' ตัวอย่าง:
var a = 5;
var b = 10;
console.log(`Sum is equal: ${a + b}`); // 'Sum is equlat: 15'
ตัวอย่างการทำงานที่นี่: https://es6console.com/j3lg8xeo/ สังเกตเครื่องหมายนี้ " ` "มันไม่ได้เป็นคำพูดปกติ
คุณยังสามารถพบ $ ในขณะที่ทำงานกับไลบรารี่ jQuery
$ ลงชื่อเข้าใช้นิพจน์ปกติหมายถึงจุดสิ้นสุดของบรรทัด
ไม่มีเหตุผล. อาจเป็นคนที่เขียนมันมาจาก PHP มันมีผลเช่นเดียวกับถ้าคุณตั้งชื่อมันว่า "_item" หรือ "item" หรือ "item $$"
ในฐานะที่เป็นคำต่อท้าย (เช่น "item $", เด่นชัด "items") มันสามารถบ่งบอกถึงสิ่งที่สังเกตได้เช่นองค์ประกอบ DOM ในรูปแบบการประชุมที่เรียกว่า"Finnish Notation"คล้ายกับฮังการี
นี่คือคำอธิบายวิดีโอสั้น ๆ ที่ดี: https://www.youtube.com/watch?v=Acm-MD_6934
ตามชื่อตัวบ่งชี้ Ecma International เป็นโทเค็นที่ตีความตามไวยากรณ์ที่ให้ไว้ในส่วน "ตัวระบุ" ของบทที่ 5ของมาตรฐาน Unicode โดยมีการดัดแปลงเล็กน้อย Identifier เป็น IdentifierName ที่ไม่ใช่ ReservedWord ( ดู 7.6.1 ) ไวยากรณ์ตัวระบุ Unicode ขึ้นอยู่กับหมวดหมู่อักขระเชิงบรรทัดฐานและข้อมูลที่ระบุโดย Unicode Standard อักขระในหมวดหมู่ที่ระบุในเวอร์ชัน 3.0 ของมาตรฐาน Unicode ต้องได้รับการปฏิบัติเช่นเดียวกับหมวดหมู่เหล่านั้นโดยการใช้ ECMAScript implementations ทั้งหมดมาตรฐานนี้ระบุการเพิ่มอักขระเฉพาะ:
เครื่องหมายดอลลาร์ ($) และขีดล่าง (_) จะได้รับอนุญาตใดก็ได้ใน IdentifierName
อ่านเพิ่มเติมได้ที่: http://www.ecma-international.org/ecma-262/5.1/#sec-7.6
Ecma Internationalเป็นสมาคมอุตสาหกรรมที่ก่อตั้งขึ้นในปี 2504 และอุทิศตนเพื่อมาตรฐานของเทคโนโลยีสารสนเทศและการสื่อสาร (ICT) และ Consumer Electronics (CE)
เมื่อใช้ jQuery การใช้$
สัญลักษณ์เป็นส่วนนำหน้าในชื่อตัวแปรเป็นเพียงการประชุม มันเป็นตัวเลือกที่สมบูรณ์และให้บริการเฉพาะเพื่อระบุว่าตัวแปรเก็บวัตถุ jQuery ตามที่เป็นในตัวอย่างของคุณ
ซึ่งหมายความว่าเมื่อจำเป็นต้องเรียกใช้ฟังก์ชัน jQuery อื่นบนวัตถุคุณไม่จำเป็นต้องปิดฟังก์ชัน$()
อีกครั้ง ตัวอย่างเช่นเปรียบเทียบสิ่งเหล่านี้:
// the usual way
var item = $(this).parent().parent().find('input');
$(item).hide(); // this is a double wrap, but required for code readability
item.hide(); // this works but is very unclear how a jQuery function is getting called on this
// with $ prefix
var $item = $(this).parent().parent().find('input');
$item.hide(); // direct call is clear
$($item).hide(); // this works too, but isn't necessary
ด้วย$
คำนำหน้าตัวแปรที่มีอยู่แล้วการถือครองวัตถุ jQuery เป็นที่รู้จักทันทีและรหัสที่อ่านได้มากขึ้นและขจัดคู่ / $()
ห่อหลายกับ