คำก่อนหน้านี้
JavaScript เป็นภาษาที่เรียบง่ายและเป็นภาษาที่ซับซ้อน มันง่ายเพราะใช้เวลาสักครู่ในการเรียนรู้ที่จะใช้มัน มันซับซ้อนเพราะต้องใช้เวลาหลายปีกว่าจะเชี่ยวชาญอย่างแท้จริง ในความเป็นจริงวิศวกรส่วนหน้าอ้างถึงวิศวกร JavaScript ในระดับใหญ่ มันง่ายที่จะเริ่มต้นด้วยส่วนหน้าและยากที่จะเชี่ยวชาญ มันหมายถึงส่วนหน้าและที่สำคัญกว่า JavaScript บทความนี้เป็นบทความแรกในไวยากรณ์พื้นฐานของ JavaScript - โครงสร้างคำศัพท์
ความสัมพันธ์กับ Java
มีคำพูดเกี่ยวกับ JavaScript: ความสัมพันธ์ระหว่าง Java และ JavaScript คือความสัมพันธ์ระหว่าง Lei Feng และ Lei Feng Tower มันมีความสำคัญ?
ชื่อเริ่มต้นของ JavaScript คือ LiveScript เหตุผลที่ฉันเลือก JavaScript เป็นชื่ออย่างเป็นทางการอาจทำให้มันฟังดูเหมือนครอบครัวที่มีชื่อเสียง นอกเหนือจากไวยากรณ์ที่มีลักษณะคล้ายกับ Java แล้ว JavaScript และ Java เป็นสองภาษาการเขียนโปรแกรมที่แตกต่างกันอย่างสิ้นเชิง
ภาษาการเขียนโปรแกรมแบ่งออกเป็นสองประเภท: ตีความและรวบรวม ภาษาเช่น Java หรือ C ++ ต้องการคอมไพเลอร์ คอมไพเลอร์เป็นโปรแกรมที่สามารถแปลซอร์สโค้ดที่เขียนด้วยภาษาระดับสูงเช่น Java เป็นไฟล์ที่ดำเนินการโดยตรงบนคอมพิวเตอร์ ภาษาการเขียนโปรแกรมที่ตีความไม่จำเป็นต้องใช้คอมไพเลอร์ - พวกเขาต้องการเฉพาะล่ามและล่าม JavaScript ในเบราว์เซอร์จะอ่านโดยตรงลงในซอร์สโค้ดและดำเนินการ
Java สามารถปรับใช้ในทางทฤษฎีในเกือบทุกสภาพแวดล้อม แต่ JavaScript มีแนวโน้มที่จะนำไปใช้กับเว็บเบราว์เซอร์เท่านั้น ยิ่งไปกว่านั้นในภาษา JavaScript ฟังก์ชั่นเป็นชนิดข้อมูลอิสระโดยใช้โซ่สืบทอดตามวัตถุต้นแบบและไวยากรณ์ JavaScript นั้นเป็นอิสระมากกว่า Java
โดยทั่วไปความหมายดั้งเดิมของชื่อ JavaScript นั้น "คล้ายกับภาษาสคริปต์ Java" มาก "
คำนิยาม
JavaScript เป็นภาษาการเขียนโปรแกรมแบบไดนามิกที่มีการตีความแบบไดนามิกที่เหมาะสมสำหรับรูปแบบการเขียนโปรแกรมเชิงวัตถุและการทำงาน ไวยากรณ์ของ JavaScript มาจาก Java ฟังก์ชั่นชั้นหนึ่งมาจากรูปแบบและการสืบทอดที่ใช้ต้นแบบมาจากตัวเอง
JavaScript ใช้เพื่อปรับปรุงเอฟเฟกต์แบบไดนามิกของหน้าและตระหนักถึงการโต้ตอบแบบเรียลไทม์และแบบไดนามิกระหว่างหน้าและผู้ใช้
JavaScript ประกอบด้วยสามส่วน: Ecmascript, Dom และ Bom
[1] ECMASCRIPT ถูกกำหนดโดย ECMA-262 และให้ฟังก์ชั่นภาษาหลัก (ECMA เป็นสมาคมผู้ผลิตคอมพิวเตอร์ในยุโรป)
[2] DOM (โมเดลวัตถุเอกสาร) โมเดลเอกสารการจัดหาวิธีการและอินเทอร์เฟซสำหรับการเข้าถึงและจัดการเนื้อหาหน้าเว็บ
[3] BOM (โมเดลวัตถุเบราว์เซอร์) โมเดลวัตถุเบราว์เซอร์ให้วิธีการและอินเทอร์เฟซสำหรับการโต้ตอบกับเบราว์เซอร์
ความไวของตัวเรือน
เกี่ยวกับภาษาจาวาสคริปต์ไม่ว่าจะเน้นมากแค่ไหนมันเป็นความไวของกรณี คำสำคัญตัวแปรชื่อฟังก์ชันและตัวระบุทั้งหมดในจาวาสคริปต์จะต้องสอดคล้องกันในตัวพิมพ์ใหญ่และล่าง
// 'ออนไลน์', 'ออนไลน์', 'ออนไลน์', 'ออนไลน์' เป็นสี่ชื่อตัวแปรที่แตกต่างกัน
[หมายเหตุ] HTML ไม่ละเอียดอ่อน
คำที่สงวนไว้
เช่นเดียวกับภาษาการเขียนโปรแกรมอื่น ๆ JavaScript ยังคงมีตัวระบุบางตัวสำหรับการใช้งานของตัวเอง คำที่สงวนไว้เหล่านี้ไม่สามารถใช้เป็นตัวระบุธรรมดาได้ เนื่องจากการทำให้เข้าใจผิดของหนังสืออ้างอิงหลายเล่มดูเหมือนว่าคำและคำหลักที่สงวนไว้จะถูกแยกออกจากกัน แต่ในความเป็นจริงพวกเขาไม่ได้ คำหลักเป็นเพียงส่วนหนึ่งของคำที่สงวนไว้ คำที่สงวนไว้รวมถึงคำหลักคำที่สงวนไว้ในอนาคตตัวอักษรว่างเปล่าและตัวอักษรบูลีน
คำสงวน ::
คำสำคัญ
Futurereservedword
เกี่ยวกับวรรณยุกต์
บูลีน
คำสำคัญ
ทำลายอินสแตนซ์ของ typeof
กรณีอื่น var ใหม่
ในที่สุดจับกลับมาเป็นโมฆะ
ดำเนินการต่อเพื่อสวิตช์ในขณะที่
ฟังก์ชั่นดีบั๊กฟังก์ชั่นนี้ด้วย
ค่าเริ่มต้นถ้าโยนลบ
ในการลอง
คำที่สงวนไว้ในอนาคต
คำต่อไปนี้ถูกใช้เป็นคำหลักส่วนขยายที่แนะนำดังนั้นจึงสงวนไว้เพื่อให้ส่วนขยายเหล่านี้อาจถูกนำมาใช้ในอนาคต
คลาส enum ขยายสุดยอด
นำเข้า
ecmascript3 เวอร์ชัน
ข้างต้นเป็นคำที่สงวนไว้สำหรับ ECMAScript5 แต่คำที่สงวนไว้ในรุ่น ECMASCript3 นั้นแตกต่างกัน หากคุณต้องการให้รหัสทำงานบนล่ามตามการใช้งาน ECMAScript3 คุณควรหลีกเลี่ยงการใช้คำที่สงวนไว้ต่อไปนี้เป็นตัวระบุ
บทคัดย่อบูลีนไบต์ระดับการส่งออก enum constdouble enum ขยายการลอยสุดท้าย
GOTO ใช้การนำเข้าแพ็คเกจ InterfaceLong Native Package ส่วนตัวได้รับการปกป้อง
สาธารณะสั้นคงที่ super synchronized throw transient trow
ตัวแปรและฟังก์ชั่นที่กำหนดไว้ล่วงหน้า
นอกจากนี้ JavaScript ได้กำหนดตัวแปรและฟังก์ชั่นทั่วโลกไว้ล่วงหน้าและควรหลีกเลี่ยงการใช้ชื่อเป็นชื่อตัวระบุ
อาร์กิวเมนต์อาร์เรย์บูลีนวันที่ decodeuri decodeuricomponent encodeuriencodeuricomponent ข้อผิดพลาดข้อผิดพลาดการประเมินฟังก์ชั่นอินฟินิตี้ isfinite
ISNAN JSON MATH NON NUMBOT OBJECT PARSEFLOAT
ReferenceRror regexp สตริง SyntaxError typeError urierror ที่ไม่ได้กำหนด
การแสดงความคิดเห็น
ข้อความทั้งหมดไม่จำเป็นต้องตีความและดำเนินการโดยล่าม JavaScript บางครั้งคุณต้องเขียนข้อมูลบางอย่างในสคริปต์สำหรับการอ้างอิงหรือการแจ้งเตือนของคุณเองและหวังว่าล่าม JavaScript สามารถเพิกเฉยต่อข้อมูลนี้ได้โดยตรง ข้อมูลประเภทนี้คือความคิดเห็น
ความคิดเห็นสามารถช่วยให้เข้าใจการไหลของรหัสได้อย่างมีประสิทธิภาพและพวกเขามีบทบาทของบันทึกชีวิตในรหัสซึ่งสามารถช่วยให้เราทราบว่าสคริปต์ทำอะไร
[หมายเหตุ] ความคิดเห็นต้องอธิบายรหัสอย่างถูกต้อง ความคิดเห็นที่ไร้ประโยชน์นั้นแย่กว่าความคิดเห็น
มีหลายวิธีในการแทรกความคิดเห็นในสคริปต์ JavaScript รวมถึงความคิดเห็นบรรทัดเดียวความคิดเห็นหลายบรรทัดและความคิดเห็นสไตล์ HTML
【 1 】ความคิดเห็นบรรทัดเดียวเริ่มต้นด้วยสองสแลช
// ความคิดเห็นบรรทัดเดียว
【 2 】ความคิดเห็นหลายบรรทัดเรียกอีกอย่างว่าความคิดเห็นระดับบล็อกเริ่มต้นด้วยสแลชและเครื่องหมายดอกจัน/*ลงท้ายด้วยเครื่องหมายดอกจันและสแลช*/
-
นี่คือความคิดเห็นที่หลากหลาย
-
[หมายเหตุ] อักขระเหล่านั้นในความคิดเห็นระดับบล็อก/ **/ อาจปรากฏในตัวอักษรนิพจน์ทั่วไปดังนั้นความคิดเห็นระดับบล็อกจึงไม่ปลอดภัยสำหรับบล็อกรหัสความคิดเห็น
-
var rm_a = /a*/.match(s);
-
【 3 】ความคิดเห็นสไตล์ HTML ใช้ได้เฉพาะกับความคิดเห็นบรรทัดเดียวเท่านั้น อันที่จริงล่าม JavaScript จัดการ <!- และ //
<!- นี่คือความคิดเห็นใน JavaScript
หากอยู่ในเอกสาร HTML คุณจะต้องยุติความคิดเห็นด้วย ->
<!-นี่คือความคิดเห็นใน html->
แต่ JavaScript ไม่ต้องการสิ่งนี้มันจะรักษา -> เป็นส่วนหนึ่งของเนื้อหาความคิดเห็น
[หมายเหตุ] HTML อนุญาตให้ความคิดเห็นเช่นนี้ข้างต้นเพื่อขยายหลายบรรทัด แต่แต่ละบรรทัดของความคิดเห็นดังกล่าวจะต้องเพิ่มเป็นธงที่จุดเริ่มต้นของความคิดเห็น "<!-"
<!- ฉันแสดงความคิดเห็น 1
<!- ฉันแสดงความคิดเห็น 2
<!- ฉันแสดงความคิดเห็น 3
เนื่องจากล่าม JavaScript นั้นแตกต่างจาก HTML เมื่อจัดการกับความคิดเห็นในรูปแบบนี้จึงเป็นการดีที่สุดที่จะไม่ใช้ในสคริปต์ JavaScript เพื่อหลีกเลี่ยงความสับสน
ความคิดเห็นสไตล์ html
ช่องว่าง
ช่องว่างมักจะไม่มีความหมายบางครั้งพวกเขาจะต้องแยกจากกันโดยใช้มันมิฉะนั้นพวกเขาจะถูกรวมเข้าเป็นสัญลักษณ์
var that = this;
ช่องว่างระหว่าง var และที่ไม่สามารถลบได้ แต่ช่องว่างอื่น ๆ สามารถลบออกได้
JavaScript ละเว้นช่องว่างระหว่างโทเค็นในโปรแกรม ในกรณีส่วนใหญ่ JavaScript ยังละเว้นการแบ่งสาย เนื่องจากช่องว่างและการแบ่งสายสามารถใช้ตามความประสงค์ในรหัสการเยื้องที่เรียบร้อยและสอดคล้องกันสามารถใช้ในการสร้างรูปแบบการเข้ารหัสแบบครบวงจรซึ่งจะเป็นการปรับปรุงความสามารถในการอ่านรหัส
// ปรับปรุงความสามารถในการอ่านรหัสโดยการเพิ่มอักขระ Whitespace สำหรับ (var i = 1; i <10; i ++) {//}JavaScript รับรู้สิ่งต่อไปนี้เป็นตัวละครช่องว่างระหว่างช่องว่าง
/u0009 อักขระแท็บแนวนอน <Tab>
/u000B ตัวอักษรแท็บแนวตั้ง <VT>
/u000c หน้าเปลี่ยน <ff>
/u0020 space character <p>
/u00a0 อักขระอวกาศที่ไม่ผ่านการร่ำรวย <NBSP>
/เครื่องหมายลำดับอักขระ ufeff
JavaScript รับรู้อักขระต่อไปนี้เป็น lineterminator line terminator
/u000a อักขระใหม่ <lf>
/u000d carriage return character <cr>
/U2028 Line Delimiter <LS>
/U2029 ย่อหน้า SPLITTER <SS>
เซมิโคลอนเสริม
JavaScript ใช้เครื่องหมายอัฒภาค; แยกข้อความซึ่งเป็นสิ่งสำคัญมากสำหรับการเพิ่มความสามารถในการอ่านและความเรียบร้อยของรหัส แต่ JavaScript ไม่ได้เติมเครื่องหมายอัฒภาคที่นิวไลน์ทั้งหมด เฉพาะเมื่อรหัสไม่สามารถแยกวิเคราะห์ได้อย่างถูกต้องหากไม่มีเครื่องหมายอัฒภาค JavaScript จะเติมเครื่องหมายอัฒภาค
var a
อัน
-
3
console.log (a)
JavaScript แยกวิเคราะห์เป็น:
var a;
a = 3;
console.log (a);
กฎการแยกนี้สามารถนำไปสู่สถานการณ์ที่ไม่คาดคิดบางอย่าง
var y = x + f
(a+b) .tostring
JavaScript แยกวิเคราะห์เป็น:
var y = x + f (a + b) .tostring
ดังนั้นเพื่อให้รหัสข้างต้นถูกแยกวิเคราะห์เป็นสองข้อความที่แตกต่างกันอัฒภาคที่ชัดเจนในตอนท้ายของบรรทัดจะต้องกรอกด้วยตนเองในตอนท้ายของบรรทัดด้วยตนเอง
สองข้อยกเว้น
หากคำสั่งปัจจุบันและคำสั่งบรรทัดถัดไปไม่สามารถรวมและแยกวิเคราะห์ได้ JavaScript จะเติมในเครื่องหมายอัฒภาคหลังจากบรรทัดแรกซึ่งเป็นกฎทั่วไป แต่มีข้อยกเว้นสองประการ
[1] ข้อยกเว้นแรกคือในสถานการณ์ที่เกี่ยวข้องกับการกลับมา, หยุดพัก, ดำเนินการต่อ, โยนงบ หากคำหลักทั้งสี่นี้ตามด้วยการแบ่งบรรทัด JavaScript จะเติมในเครื่องหมายอัฒภาคที่ตัวแบ่งบรรทัด
กลับ
จริง;
JavaScript แยกวิเคราะห์เป็น:
กลับมา; จริง;
และความหมายดั้งเดิมของรหัสคือ:
กลับมาจริง;
[2] ข้อยกเว้นที่สองคือเมื่อมีการเกี่ยวข้องกับตัวดำเนินการ ++ และ - - หากใช้เป็นนิพจน์ต่อท้ายมันควรจะเป็นบรรทัดเดียวกับนิพจน์ มิฉะนั้นจุดสิ้นสุดของบรรทัดจะเติมเซมิโคลอนและ ++ หรือ - จะถูกใช้เป็นตัวดำเนินการคำนำหน้าสำหรับรหัสบรรทัดถัดไปและแยกวิเคราะห์ด้วยมัน
x
-
y
JavaScript แยกวิเคราะห์เป็น:
x; ++ y;
และความหมายดั้งเดิมของรหัสคือ:
x ++; y;
แม้ว่าเครื่องหมายอัฒภาคไม่จำเป็น แต่ก็เป็นการดีที่สุดที่จะไม่ละเว้นเนื่องจากการเพิ่มเครื่องหมายอัฒภาคสามารถหลีกเลี่ยงข้อผิดพลาดมากมายและไม่มีเครื่องหมายอัฒภาคเมื่อสิ้นสุดบรรทัดของรหัสจะนำไปสู่ข้อผิดพลาดในการบีบอัด การเพิ่มเครื่องหมายอัฒภาคจะปรับปรุงประสิทธิภาพของรหัสในบางกรณีเนื่องจากตัวแยกวิเคราะห์จะไม่ต้องใช้เวลาคาดเดาว่าจะแทรกอัฒภาค