โครงสร้างคำศัพท์ของภาษาการเขียนโปรแกรมเป็นชุดของกฎพื้นฐานที่ใช้เพื่ออธิบายวิธีการเขียนภาษานี้ เป็นพื้นฐานของไวยากรณ์จะระบุชื่อตัวแปรที่มีลักษณะอย่างไรวิธีการเขียนความคิดเห็นและวิธีการแยกแยะระหว่างคำสั่ง ส่วนนี้ใช้พื้นที่สั้น ๆ เพื่อแนะนำโครงสร้างคำศัพท์ของ JavaScript
1. ชุดอักขระ
โปรแกรม JavaScript ถูกเขียนในชุดอักขระ Unicode, Superset ของ ASCII และ Latin-1 และรองรับเกือบทุกภาษาในภูมิภาค ECMAScript3 กำหนดให้การใช้งาน JavaScript ต้องรองรับ Unicode2, 1 และรุ่นต่อ ๆ ไปในขณะที่ ECMAScript5 ต้องการให้การใช้งานของ JavaScript ต้องรองรับ Unicode3 และรุ่นที่ตามมา
ฉัน. ตัวพิมพ์เล็ก
JavaScript เป็นภาษาที่ไวต่อตัวพิมพ์ใหญ่นั่นคือคำหลัก, ตัวแปร, ชื่อฟังก์ชันและอักขระนิพจน์ทั้งหมดจะต้องได้รับการปรับแต่งอย่างสม่ำเสมอ ตัวอย่างเช่นคำหลักในขณะที่ต้องเขียนเป็นขณะที่และไม่สามารถเขียนได้ในขณะหรือขณะที่
แต่ควรสังเกตว่า HTML ไม่ได้มีความอ่อนไหว (แม้ว่า XHTML จะแตกต่างกัน) และเป็นเรื่องง่ายที่จะสับสนเพราะมันเกี่ยวข้องกับ JavaScript ของลูกค้าอย่างใกล้ชิด ตัวอย่างเช่นในเหตุการณ์การประมวลผลที่กำหนดโดย HTML แอตทริบิวต์ onclick สามารถเขียนเป็น onclick แต่ใน JavaScript สามารถเขียนเป็น onclick ได้
ช่องว่าง II, ตัวแบ่งบรรทัดและตัวควบคุมรูปแบบ
JavaScript ละเว้นช่องว่างระหว่างโทเค็นในโปรแกรม ในกรณีส่วนใหญ่ JavaScript ยังละเว้นการแบ่งสาย เนื่องจากช่องว่างและการแบ่งสายสามารถใช้ตามความประสงค์ในรหัสการเยื้องที่เรียบร้อยและสอดคล้องกันสามารถใช้ในครั้งเดียวเพื่อสร้างรูปแบบการเข้ารหัสแบบครบวงจรปรับปรุงความสามารถในการอ่านของรหัส
JavaScript นอกเหนือจากการระบุอักขระอวกาศ (/U0020) JavaScript ยังแสดงอักขระต่อไปนี้ที่ระบุช่องว่าง: อักขระแท็บแนวนอน (/u0009) อักขระแท็บแนวตั้ง (/u000b) อักขระการต่ออายุหน้า (/u000c) อักขระ Whitespace ที่ไม่แทรกแซง (/U00A0), แท็ก Endian (/ufeff) JavaScript รับรู้อักขระต่อไปนี้เป็นอักขระสิ้นสุด: Line Break (/U000A), สัญลักษณ์การส่งคืน Carriage (/U000D), ตัวคั่นบรรทัด (/U2028) และตัวคั่นเซ็กเมนต์ (/U2029) ตัวละคร Return Return ของ Carriage และ Line Break จะถูกแยกวิเคราะห์เป็นอักขระจบบรรทัดเดียว
รูปแบบ Unicode ควบคุมอักขระ (คลาส CF) เช่น "เครื่องหมายเขียนจากขวาไปซ้าย" (/U200F) และ "เครื่องหมายเขียนจากซ้ายไปขวา" (/U200E) ควบคุมการแสดงภาพข้อความ นี่เป็นสิ่งสำคัญสำหรับการแสดงที่ถูกต้องของข้อความที่ไม่ใช่ภาษาอังกฤษบางอย่างซึ่งสามารถใช้ในความคิดเห็น JavaScript ปริมาณโดยตรงสตริงและปริมาณโดยตรงนิพจน์ปกติ แต่ไม่สามารถใช้ในตัวระบุ (เช่นชื่อตัวแปร) แต่มีข้อยกเว้นสำหรับตัวเชื่อมต่อความกว้าง (/U200D) มันยังกล่าวถึงข้างต้นว่าอักขระการควบคุมรูปแบบเครื่องหมายคำสั่งซื้อของไบต์ (/ufeff) ถือเป็นพื้นที่
III.Unicode Escape Sequence
ในฮาร์ดแวร์และซอฟต์แวร์คอมพิวเตอร์บางตัวชุดอักขระ Unicode ที่สมบูรณ์ไม่สามารถแสดงหรือป้อนได้ เพื่อสนับสนุนโปรแกรมเมอร์โดยใช้เทคโนโลยีเก่า JavaScript กำหนดลำดับพิเศษที่ใช้อักขระ ASCII 6 ตัวเพื่อแสดงรหัสภายใน Unicode 16 บิตใด ๆ ลำดับการหลบหนีของ Unicode เหล่านี้จะถูกนำหน้าโดย /u ตามด้วยหนู hexadecimal (ระบุด้วยตัวเลขและตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก AF) การเขียน Escape Unicode นี้สามารถใช้ใน JavaScript String Direct ปริมาณการแสดงออกปกติและตัวระบุ (ยกเว้นคำหลัก) ตัวอย่างเช่น Unicode Escape ของตัวละครéถูกเขียนเป็น /u00e9 และสตริง JavaScript สองสายต่อไปนี้เหมือนกันทุกประการ
"café" === "caf/u00e9" => true
Unicode Escape Writing สามารถปรากฏในความคิดเห็น แต่เนื่องจาก JavaScript ไม่สนใจความคิดเห็นพวกเขาจึงได้รับการปฏิบัติเหมือนเป็นอักขระ ASCII ในบริบทและจะไม่ถูกติดตามด้วยอักขระ Unicode
มาตรฐาน IIII
Unicode อนุญาตให้เข้ารหัสอักขระเดียวกันโดยใช้หลายวิธี ตัวอย่างเช่นอักขระéสามารถใช้อักขระ Unicode /U00E9 หรืออักขระ ASCII สามัญสามารถใช้เพื่อติดตามสัญลักษณ์เสียง /U0301 ในตัวแก้ไขข้อความผลลัพธ์ที่แสดงโดยการเข้ารหัสทั้งสองนี้จะเหมือนกันทุกประการ แต่การเป็นตัวแทนการเข้ารหัสแบบไบนารีของพวกเขานั้นแตกต่างกันและไม่เท่ากันในคอมพิวเตอร์ มาตรฐาน Unicode กำหนดรูปแบบรหัสที่ต้องการสำหรับอักขระดัชนีและให้วิธีการประมวลผลมาตรฐานเพื่อแปลงข้อความเป็นรูปแบบมาตรฐานที่เหมาะสมสำหรับการเปรียบเทียบและจะไม่สร้างมาตรฐานการเป็นตัวแทนอื่น ๆ สตริงหรือนิพจน์ทั่วไปอีกต่อไป
2. ความคิดเห็น
JavaScript รองรับวิธีการแสดงความคิดเห็นสองวิธี ข้อความหลังจาก "//" ในตอนท้ายของบรรทัดจะถูกละเว้นโดย JavaScript เป็นความคิดเห็น
นอกจากนี้ข้อความระหว่าง / * และ * / ยังใช้เป็นความคิดเห็น ความคิดเห็นประเภทนี้สามารถเขียนข้ามบรรทัดได้ แต่ไม่มีความคิดเห็นที่ซ้อนกัน
// ความคิดเห็นบรรทัดเดียว
-
-
-
-
-
3. ปริมาณโดยตรง
ปริมาณโดยตรงที่เรียกว่า (ตัวอักษร) คือค่าข้อมูลที่ใช้โดยตรงในโปรแกรม ปริมาณโดยตรงแสดงอยู่ด้านล่าง
การคัดลอกรหัสมีดังนี้:
12 // ตัวเลข
1.2 // ทศนิยม
"Hllo World" // ข้อความสตริง
'สวัสดี' // สตริงอื่น
จริง // บูลีน
เท็จ // บูลีน
/javascript /gi // ปริมาณโดยตรงนิพจน์ทั่วไป (ใช้เป็นการจับคู่รูปแบบ)
null // ว่างเปล่า
บทที่ 3 จะอธิบายรายละเอียดเกี่ยวกับปริมาณและสตริงโดยตรง ปริมาณโดยตรงของการแสดงออกปกติจะอธิบายในบทที่ 10 การแสดงออกของสวัสดิการเพิ่มเติมสามารถเขียนเป็นอาร์เรย์หรือวัตถุโดยตรง
{x: 1, y: 2} // วัตถุ
[1,2,3,4,5] // อาร์เรย์
4. ตัวระบุและคำที่สงวนไว้
ตัวระบุคือชื่อ ใน JavaScript ตัวระบุจะใช้ในการตั้งชื่อตัวแปรและฟังก์ชั่นหรือเพื่อทำเครื่องหมายตำแหน่งกระโดดในคำสั่งลูปบางอย่างในรหัส JavaScript ตัวระบุ JavaScript ต้องอยู่ในตัวอักษร ขีดล่างหรือสัญญาณดอลลาร์เริ่มขึ้น อักขระที่ตามมาสามารถเป็นตัวอักษร ตัวเลข. ขีดล่างหรือเครื่องหมายดอลลาร์ (หมายเลขไม่ได้รับอนุญาตให้ปรากฏเป็นชื่อย่อ JavaScript สามารถแยกตัวระบุจากตัวเลขได้อย่างง่ายดาย) และต่อไปนี้เป็นตัวระบุทางกฎหมาย
การคัดลอกรหัสมีดังนี้:
my_variable_name
B13
_dummy
$ Str
เพื่อการพกพาและความสะดวกในการเขียนเรามักจะใช้ตัวอักษรและตัวเลข ASCII เท่านั้นในการเขียนตัวระบุ จากนั้นควรสังเกตว่า JavaScript อนุญาตให้ตัวอักษรและตัวเลขในชุดอักขระ Unicode ทั้งหมดในตัวระบุ (จากเทคโนโลยีไปยัง ECMASCript อนุญาตให้คลาส MN คลาส MC และคลาส P ของกลไกอักขระ Unicode เพื่อปรากฏหลังจากอักขระแรกของตัวระบุ) ดังนั้นโปรแกรมเมอร์สามารถใช้ภาษาที่ไม่ใช่ภาษาอังกฤษหรือสัญลักษณ์ทางคณิตศาสตร์เพื่อเขียนตัวระบุ
การคัดลอกรหัสมีดังนี้:
var sá = true;
var π = 3.14;
JavaScript นำตัวระบุบางอย่างเป็นคำหลักดังนั้นชื่อจึงไม่สามารถใช้คำหลักเหล่านี้เป็นตัวระบุในโปรแกรมได้อีกต่อไป
การคัดลอกรหัสมีดังนี้:
หยุดพัก
กรณี
จับ
ดำเนินการต่อดำเนินการต่อ
ค่าเริ่มต้น
ลบลบ
ทำ
อื่น
ในที่สุด
สำหรับ
การทำงาน
ถ้า
ใน
ตัวอย่าง
ใหม่
กลับ
สวิตช์
นี้
โยน
พยายาม
ประเภทของ
วาจา
โมฆะ
ในขณะที่
กับ
คำที่สงวนไว้ Javascript
การส่งออกระดับ const const
การส่งออกขยายการนำเข้าซุปเปอร์
นอกจากนี้คำหลักเหล่านี้ถูกกฎหมายใน JavaScript ปกติ แต่เป็นคำที่สงวนไว้ในโหมดเข้มงวด
อุปกรณ์ช่วยให้แพ็คเกจอินเทอร์เฟซของเอกชน
ได้รับการป้องกันแบบคงที่
ในโหมดที่เข้มงวดเดียวกันตัวระบุต่อไปนี้จะถูก จำกัด อย่างเคร่งครัด แต่ไม่สามารถใช้ชื่อตัวแปรชื่อพารามิเตอร์และชื่อฟังก์ชันได้
อาร์กิวเมนต์ประเมิน
การใช้งานเฉพาะของ JavaScript อาจกำหนดตัวแปรและฟังก์ชั่นส่วนกลางที่ไม่ซ้ำกัน เซิร์ฟเวอร์ JavaScript ที่ใช้งานโดยเฉพาะแต่ละเซิร์ฟเวอร์ (ไคลเอนต์) ฯลฯ มีรายการแอตทริบิวต์ทั่วโลกของตัวเองซึ่งต้องคำนึงถึง (วัตถุหน้าต่างเพื่อทำความเข้าใจรายการตัวแปรและฟังก์ชั่นส่วนกลางที่กำหนดไว้ใน JavaScript ไคลเอนต์)
5. เครื่องหมายอัฒภาคทางเลือก
เช่นเดียวกับภาษาการเขียนโปรแกรมจำนวนมาก JavaScript ใช้เครื่องหมายอัฒภาค (;) เพื่อแยกข้อความ สิ่งนี้สำคัญมากสำหรับการเพิ่มความสามารถในการอ่านและความเรียบร้อยของรหัส จุดสิ้นสุดของคำสั่งที่ไม่มีตัวคั่นกลายเป็นจุดเริ่มต้นของคำสั่งถัดไปและในทางกลับกัน
ใน JavaScript แต่ละคำสั่งใช้เวลาหนึ่งบรรทัดและอัฒภาคระหว่างคำสั่งสามารถละเว้นได้ (semicolon ก่อนการจัดฟันของ "}" ในตอนท้ายของโปรแกรมสามารถละเว้นได้) โปรแกรมเมอร์ JavaScript จำนวนมาก (รวมถึงตัวอย่างรหัสของหนังสือเล่มนี้) ใช้เครื่องหมายอัฒภาคเพื่อทำเครื่องหมายจุดสิ้นสุดของคำสั่งอย่างชัดเจนแม้ว่าจะไม่จำเป็นต้องใช้เครื่องหมายอัฒภาคอย่างสมบูรณ์ อีกสไตล์คือการละเว้นเครื่องหมายอัฒภาคเมื่อพวกเขาสามารถละเว้นและใช้เซมิโคลอนเมื่อพวกเขาจะต้องใช้ โดยไม่คำนึงถึงรูปแบบการเขียนโปรแกรมมีรายละเอียดหลายอย่างที่ให้ความสนใจกับ JavaScript
รหัสต่อไปนี้สามารถละเว้นเครื่องหมายอัฒภาคแรกได้
a = 3;
b = 4;
อย่างไรก็ตามหากเขียนในรูปแบบต่อไปนี้เครื่องหมายอัฒภาคแรกไม่สามารถละเว้นได้
a = 3; b = 4;
ควรสังเกตว่า JavaScript ไม่ได้เติมเครื่องหมายอัฒภาคในนิวไลน์ทั้งหมด: JavaScript จะเติมเครื่องหมายอัฒภาคเฉพาะเมื่อรหัสไม่ได้แยกวิเคราะห์ตามปกติโดยไม่มีเครื่องหมายอัฒภาค กล่าวอีกนัยหนึ่ง (คล้ายกับข้อยกเว้นสองข้อในรหัสต่อไปนี้) หากคำสั่งปัจจุบันและอักขระที่ไม่ใช่อวกาศที่ตามมาไม่สามารถแยกวิเคราะห์ได้โดยรวม JavaScript จะเติมเครื่องหมายอัฒภาคในตอนท้ายของคำสั่งปัจจุบัน ดูรหัสต่อไปนี้
var a
อัน
-
3
console.log (a)
JavaScript แยกวิเคราะห์เป็น
var a; a = 3; console.log (a);
JavaScript เพิ่ม semicolon ลงในบรรทัดแรก หากไม่มีเครื่องหมายอัฒภาค JavaScript ไม่สามารถแยกวิเคราะห์ var aa ในรหัสได้ A ที่สองสามารถใช้เป็นคำสั่ง "A;" แต่ JavaScript ไม่ได้เติมเครื่องหมายอัฒภาคในตอนท้ายของบรรทัดที่สอง เพราะมันสามารถแยกวิเคราะห์ด้วยเนื้อหาบรรทัดที่สามเป็น "a = 3;" -
กฎการแยกของข้อความบางอย่างจะนำไปสู่สถานการณ์ที่ไม่คาดคิด รหัสแบ่งนี้แบ่งออกเป็นสองบรรทัดซึ่งดูเหมือนจะเป็นสองข้อความอิสระ
var y = x + f
(a+b) .tostring ()
วงเล็บบนบรรทัดที่สองจะเรียกใช้ฟังก์ชันการเรียกใช้ F ด้วย F บนบรรทัดแรก JavaScript จะถือว่ารหัสนี้เป็น
var y = x+f (a+b) .tostring ();
เห็นได้ชัดว่าความตั้งใจดั้งเดิมของรหัสไม่เป็นเช่นนี้ เพื่อให้รหัสข้างต้นถูกแยกวิเคราะห์เป็นสองข้อความที่แตกต่างกันคุณต้องกรอกอัฒภาคที่แสดงด้วยตนเองด้วยตนเอง
โดยทั่วไปถ้าคำสั่งเริ่มต้นด้วย ([ / + - มันมีแนวโน้มที่จะแยกวิเคราะห์ด้วยคำสั่งก่อนหน้านี้ข้อความเริ่มต้นด้วย / + - ไม่ธรรมดามาก แต่ข้อความเริ่มต้นด้วย ([เป็นเรื่องธรรมดามากอย่างน้อยในรูปแบบการเข้ารหัส JavaScript บางอย่าง
หากคำสั่งปัจจุบันและคำสั่งบรรทัดถัดไปไม่สามารถรวมและแยกวิเคราะห์ได้ JavaScript เติมเครื่องหมายอัฒภาคหลังจากแถวแรกซึ่งเป็นกฎทั่วไป แต่มีสองคอลัมน์ด้านนอก ข้อยกเว้นแรกที่เกี่ยวข้องกับ returnm, Birak เขายังคงแถลงการณ์หากคำหลักทั้งสามนี้ตามมาด้วยการแบ่งบรรทัด JavaScript จะเติมเครื่องหมายอัฒภาคที่ Newline ตัวอย่างเช่น
ตัวอย่างเช่น
กลับ
จริง;
และจาวาสคริปต์แยกวิเคราะห์เข้าไปใน
กลับ; ture;
และความหมายดั้งเดิมของรหัสคือ
คืนความจริง;
กล่าวอีกนัยหนึ่งไม่สามารถมีการแบ่งบรรทัดระหว่างการแสดงออกที่ตามมาด้วยการส่งคืนการทำลายและ contuine หากมีการเพิ่มการแบ่งบรรทัดโปรแกรมสามารถรายงานข้อผิดพลาดในสถานการณ์พิเศษเท่านั้น นอกจากนี้การดีบักของโปรแกรมไม่สะดวก
ตัวอย่างที่สองคือเมื่อมันมาถึงตัวดำเนินการ ++ - สัญลักษณ์นิพจน์เหล่านี้สามารถแสดงคำนำหน้าและคำต่อท้ายของนิพจน์ตัวระบุ ถ้าตามด้วยนิพจน์ถ้าใช้เป็นนิพจน์ต่อท้าย มันและการแสดงออกควรถือเป็นบรรทัดเดียว มิฉะนั้นรอบ ๆ อัฒภาคจะถูกเติมในตอนท้ายของบรรทัด
การคัดลอกรหัสมีดังนี้:
x
-
yy
รหัสข้างต้นถูกแยกวิเคราะห์เป็น
การคัดลอกรหัสมีดังนี้:
x;
++ y