1. การจำแนกประเภท
ประเภทข้อมูลพื้นฐาน: undefined, null, สตริง, บูลีน, หมายเลข
ประเภทข้อมูลที่ซับซ้อน: วัตถุ
แอตทริบิวต์ของวัตถุถูกกำหนดไว้ในรูปแบบของชื่อและค่าที่ไม่ได้เรียงลำดับ (ชื่อ: ค่า)
2. คำอธิบายโดยละเอียด
1. ไม่ได้กำหนด : ประเภทที่ไม่ได้กำหนดมีเพียงค่าเดียว: ไม่ได้กำหนด เมื่อตัวแปรถูกประกาศโดยใช้ VAR แต่ไม่ได้เริ่มต้นค่าของตัวแปรนี้จะไม่ได้กำหนด
ตัวแปรที่มีค่าที่ไม่ได้กำหนดนั้นแตกต่างจากตัวแปรที่ไม่ได้กำหนด ตัวอย่างต่อไปนี้สามารถแสดง:
การคัดลอกรหัสมีดังนี้:
var demo1; // ประกาศ แต่ไม่ได้เริ่มต้น
การแจ้งเตือน (demo1); // undefined
การแจ้งเตือน (demo2); // รายงานข้อผิดพลาด Demo2 ไม่ได้กำหนดไว้
2. NULL : มีค่าเดียวสำหรับประเภท NULL: NULL จากมุมมองเชิงตรรกะค่า NULL แสดงถึงตัวชี้วัตถุเปล่า
หากตัวแปรที่กำหนดพร้อมที่จะใช้เพื่อบันทึกวัตถุในอนาคตจะเป็นการดีที่สุดที่จะเริ่มต้นตัวแปรเป็น null แทนค่าอื่น ๆ ด้วยวิธีนี้เพียงแค่ตรวจจับค่า NULL โดยตรงคุณสามารถรู้ได้ว่าตัวแปรที่เกี่ยวข้องได้บันทึกการอ้างอิงของวัตถุหรือไม่เช่น:
การคัดลอกรหัสมีดังนี้:
if (car! = null)
-
// ดำเนินการบางอย่างบนวัตถุรถยนต์
-
ในความเป็นจริงค่าที่ไม่ได้กำหนดนั้นได้มาจากค่า NULL ดังนั้น ECMA-262 ระบุว่าการทดสอบความเท่าเทียมควรกลับมาเป็นจริง
การแจ้งเตือน (undefined == null); //จริง
แม้ว่า Null และ Undefined มีความสัมพันธ์เช่นนี้การใช้งานของพวกเขานั้นแตกต่างกันอย่างสิ้นเชิง ไม่ว่าในกรณีใด ๆ ไม่จำเป็นที่จะต้องตั้งค่าตัวแปรอย่างชัดเจนเป็น undefined แต่กฎเดียวกันไม่ได้ใช้กับ null กล่าวอีกนัยหนึ่งตราบใดที่ตัวแปรที่ตั้งใจจะบันทึกวัตถุยังไม่ได้บันทึกวัตถุตัวแปรควรได้รับอนุญาตให้บันทึกค่า NULL อย่างชัดเจน การทำเช่นนั้นไม่เพียง แต่สะท้อนให้เห็นถึงการประชุมของ NULL เป็นตัวชี้สำหรับวัตถุ NULL แต่ยังช่วยแยกแยะความแตกต่างระหว่าง NULL และ Undevined เพิ่มเติม
3. บูลีน : ประเภทบูลีนมีสองค่า: จริงและเท็จ ค่าทั้งสองนี้ไม่เหมือนกับค่าตัวเลขดังนั้นความจริงไม่จำเป็นต้องเท่ากับ 1 และเท็จไม่จำเป็นต้องเท่ากับ 0
ควรสังเกตว่าค่าตามตัวอักษรของชนิดบูลีนนั้นมีความอ่อนไหวเป็นกรณีนั่นคือไม่จริงหรือเท็จ (และรูปแบบอื่น ๆ ของการผสมเคส) เป็นค่าบูลีน แต่เป็นเพียงตัวระบุ
แม้ว่าจะมีเพียงสองค่าตัวอักษรสำหรับประเภทบูลีน แต่ค่าทุกประเภทในจาวาสคริปต์มีค่าเทียบเท่ากับค่าบูลีนทั้งสองนี้ ในการแปลงค่าเป็นค่าบูลีนที่สอดคล้องกันคุณสามารถเรียกใช้ฟังก์ชันการแปลงประเภทบูลีน () ตัวอย่างเช่น:
การคัดลอกรหัสมีดังนี้:
ข้อความ var = 'Hello World';
var messageasboolean = boolean (ข้อความ);
ในตัวอย่างนี้ข้อความสตริงจะถูกแปลงเป็นค่าบูลีนซึ่งเก็บไว้ในตัวแปร Messageasboolean ฟังก์ชั่นบูลีน () สามารถเรียกใช้ตามค่าของประเภทข้อมูลใด ๆ และค่าบูลีนจะถูกส่งคืนเสมอ สำหรับว่าค่าที่ส่งคืนนั้นเป็นจริงหรือเท็จมันขึ้นอยู่กับชนิดข้อมูลเพื่อแปลงค่าและค่าที่แท้จริง ตารางต่อไปนี้แสดงกฎการแปลงสำหรับชนิดข้อมูลต่างๆและวัตถุ
กฎการแปลงเหล่านี้มีความสำคัญอย่างยิ่งสำหรับการทำความเข้าใจการดำเนินการอัตโนมัติของการแปลงบูลีนที่สอดคล้องกันในคำสั่งควบคุมการไหล (เช่นคำสั่งถ้าคำสั่ง) ตัวอย่างเช่น:
การคัดลอกรหัสมีดังนี้:
ข้อความ var = 'Hello World';
ถ้า (ข้อความ) // เทียบเท่ากับ IF (บูลีน (ข้อความ) == true)
-
การแจ้งเตือน ("ค่าเป็นจริง"); // ค่าเป็นจริง
-
เนื่องจากการแปลงบูลีนอัตโนมัตินี้จึงเป็นสิ่งสำคัญที่จะต้องรู้ว่าตัวแปรใดที่ใช้ในคำสั่งควบคุมการไหล
4. หมายเลข: จำนวนเต็มและจุดลอยตัว
4.1 จำนวนเต็ม: เมื่อทำการคำนวณจำนวนแปดค่าและเลขฐานสิบหกจะถูกแปลงเป็นทศนิยม
4.2 จุดลอยตัว: ความแม่นยำสูงสุดของค่าจุดลอยตัวคือ 17 บิตดังนั้นความแม่นยำของมันจึงน้อยกว่าจำนวนเต็มเมื่อคำนวณเลขคณิต ตัวอย่างเช่น: ผลลัพธ์ของ 0.1+0.2 ไม่ใช่ 0.3 แต่ 0.300000000000000004 ตัวอย่างเช่น:
การคัดลอกรหัสมีดังนี้:
a = 0.2;
b = 0.1;
if (a+b == 0.3) {
การแจ้งเตือน ("สวัสดี");
-
อื่น{
การแจ้งเตือน ("สวัสดี");
-
ผลลัพธ์จะปรากฏขึ้น "สวัสดี" ดังนั้นอย่าทดสอบค่าจุดลอยตัวที่เฉพาะเจาะจง
4.3 NAN: ไม่ใช่ตัวเลขไม่ใช่ตัวเลขค่านี้ใช้เพื่อแสดงกรณีที่ตัวถูกดำเนินการที่ต้องการคืนค่าไม่ได้ส่งคืนค่า (จะไม่ส่งข้อผิดพลาด)
น่านเองมีสองลักษณะพิเศษ ขั้นแรกการดำเนินการใด ๆ ที่เกี่ยวข้องกับ NAN (เช่น NAN/10) จะส่งคืน NAN ซึ่งเป็นคุณลักษณะที่อาจทำให้เกิดปัญหาในการคำนวณหลายขั้นตอน ประการที่สองน่านไม่เท่ากับค่าใด ๆ รวมถึงน่านเอง ตัวอย่างเช่น:
การคัดลอกรหัสมีดังนี้:
การแจ้งเตือน (nan == nan); //เท็จ
มีฟังก์ชั่น ISNAN () ใน JavaScript ฟังก์ชั่นนี้ยอมรับพารามิเตอร์ซึ่งสามารถเป็นประเภทใดก็ได้และฟังก์ชั่นจะช่วยให้เราพิจารณาว่าพารามิเตอร์นี้เป็น "ไม่ใช่ค่าตัวเลข" หลังจากได้รับค่า isnan () พยายามแปลงค่านี้เป็นค่าตัวเลข ค่าบางอย่างที่ไม่ใช่ค่าตัวเลขจะถูกแปลงเป็นค่าตัวเลขโดยตรงเช่นสตริง "10" หรือค่าบูลีน ค่าใด ๆ ที่ไม่สามารถแปลงเป็นค่าตัวเลขจะทำให้ฟังก์ชันนี้ส่งคืนจริง ตัวอย่างเช่น:
การคัดลอกรหัสมีดังนี้:
การแจ้งเตือน (isnan (nan)); //จริง
การแจ้งเตือน (isnan (10)); // false (10 เป็นค่าตัวเลข)
การแจ้งเตือน (iSnan ("10")); // false (อาจถูกแปลงเป็นค่าตัวเลข 10)
การแจ้งเตือน (iSnan ("สีน้ำเงิน")); // true (ไม่สามารถแปลงเป็นค่าตัวเลขได้)
การแจ้งเตือน (iSnan ("Bule123")); // ture (ไม่สามารถแปลงเป็นค่าตัวเลขได้)
การแจ้งเตือน (isnan (จริง)); // false (อาจถูกแปลงเป็นค่า 1)
มี 3 ฟังก์ชั่นที่สามารถแปลงค่าที่ไม่ใช่ตัวเลขเป็นค่าตัวเลข: number (), parseint () และ parsefloat () ฟังก์ชั่นแรกคือหมายเลขฟังก์ชันการแปลง () สามารถใช้สำหรับประเภทข้อมูลใด ๆ ในขณะที่อีกสองฟังก์ชั่นจะใช้โดยเฉพาะเพื่อแปลงสตริงเป็นค่าตัวเลข ฟังก์ชั่นทั้ง 3 นี้จะส่งคืนผลลัพธ์ที่แตกต่างกันสำหรับอินพุตเดียวกัน
กฎการแปลงของฟังก์ชันตัวเลข () มีดังนี้:
●หากเป็นค่าบูลีนจริงและเท็จจะถูกแทนที่ด้วย 1 และ 0 ตามลำดับ
●หากเป็นค่าตัวเลขมันเป็นเพียงการส่งผ่านและส่งคืนอย่างง่าย
●หากเป็นค่าว่างให้ส่งคืน 0
●หากไม่ได้กำหนดให้คืนน่าน
●หากเป็นสตริงให้ทำตามกฎต่อไปนี้:
○หากสตริงมีเพียงตัวเลขเท่านั้นให้แปลงเป็นค่าทศนิยมนั่นคือ "1" จะกลายเป็น 1, "123" จะกลายเป็น 123 และ "011" จะกลายเป็น 11 (นำ 0 นำ 0 ถูกละเว้น)
○หากสตริงมีรูปแบบจุดลอยตัวที่ถูกต้องเช่น "1.1" มันจะถูกแปลงเป็นหมายเลขจุดลอยตัวที่สอดคล้องกัน (เช่นนำ 0 จะถูกละเว้น)
○หากสตริงมีรูปแบบ hexadecimal ที่ถูกต้องเช่น "0xf" มันจะถูกแปลงเป็นค่าจำนวนเต็มทศนิยมที่มีขนาดเท่ากัน
○หากสตริงว่างให้แปลงเป็น 0
○หากสตริงมีอักขระอื่นนอกเหนือจากรูปแบบด้านบนให้แปลงเป็น NAN
●หากเป็นวัตถุให้เรียกใช้วิธีการของวัตถุ () จากนั้นแปลงค่าที่ส่งคืนตามกฎก่อนหน้า หากผลลัพธ์ของการแปลงเป็น NAN วิธีการ ToString () ของวัตถุนั้นถูกเรียกและจากนั้นค่าสตริงที่ส่งคืนจะถูกแปลงตามกฎก่อนหน้า
การคัดลอกรหัสมีดังนี้:
var num1 = number ("Hello World"); // น่าน
var num2 = number (""); // 0
var num3 = number ("000011"); // 11
var num4 = number (จริง); // 1
เนื่องจากฟังก์ชั่นจำนวน () มีความซับซ้อนและไม่มีเหตุผลมากขึ้นเมื่อแปลงสตริงฟังก์ชัน parseint () จึงใช้กันทั่วไปเมื่อประมวลผลจำนวนเต็มและฟังก์ชัน parsefloat () มักใช้เมื่อประมวลผลหมายเลขจุดลอยตัว สำหรับรายละเอียดโปรดดูที่: http://www.cnblogs.com/yxfield/p/4167954.html
5. สตริง
ประเภทสตริงใช้เพื่อแสดงลำดับของอักขระที่ประกอบด้วยอักขระ Unicode 16 บิตหรือมากกว่า 16 บิตเช่นสตริง สตริงสามารถแสดงโดยใบเสนอราคาเดี่ยว (') หรือคำพูดสองครั้ง (")
การคัดลอกรหัสมีดังนี้:
var str1 = "สวัสดี";
var str2 = 'สวัสดี';
ความยาวของสตริงใด ๆ สามารถรับได้โดยการเข้าถึงคุณสมบัติความยาว
การคัดลอกรหัสมีดังนี้:
การแจ้งเตือน (str1.length); // เอาต์พุต 5
มีสองวิธีในการแปลงค่าเป็นสตริง อย่างแรกคือการใช้วิธี ToString () ที่เกือบทุกค่ามี
การคัดลอกรหัสมีดังนี้:
var อายุ = 11;
var ageasstring = age.toString (); // สตริง "11"
พบ var = true;
var foundassTring = found.toString (); // สตริง "จริง"
ค่าตัวเลขบูลีนวัตถุและสตริงทั้งหมดมีวิธีการ toString () แต่ค่า NULL และไม่ได้กำหนดไม่มีวิธีนี้
ในกรณีส่วนใหญ่การเรียกใช้วิธี ToString () ไม่จำเป็นต้องผ่านพารามิเตอร์ อย่างไรก็ตามเมื่อเรียกใช้วิธี TOSTRING () ของค่าตัวเลขคุณสามารถผ่านพารามิเตอร์: cardinality ของค่าเอาต์พุต
การคัดลอกรหัสมีดังนี้:
var num = 10;
การแจ้งเตือน (num.toString ()); // "10"
การแจ้งเตือน (num.toString (2)); // "1010"
การแจ้งเตือน (num.toString (8)); // "12"
การแจ้งเตือน (num.toString (10)); // "10"
การแจ้งเตือน (num.toString (16)); // "A"
จากตัวอย่างนี้เราจะเห็นได้ว่าโดยการระบุ cardinality วิธี toString () จะเปลี่ยนค่าเอาต์พุต ค่า 10 สามารถแปลงเป็นรูปแบบตัวเลขที่แตกต่างกันเมื่อเอาท์พุทตามความเป็น cardinality ที่แตกต่างกัน
โดยไม่ทราบว่าค่าที่จะแปลงนั้นเป็นโมฆะหรือไม่ได้กำหนดคุณยังสามารถใช้สตริงฟังก์ชันการแปลง () ซึ่งสามารถแปลงค่าใด ๆ เป็นสตริง ฟังก์ชันสตริง () เป็นไปตามกฎการแปลงต่อไปนี้:
●หากค่ามีวิธี ToString () วิธีการจะเรียกว่า (ไม่มีพารามิเตอร์) และผลลัพธ์ที่สอดคล้องกันจะถูกส่งกลับ
●หากค่าเป็นโมฆะให้ส่งคืน "null"
●หากค่าไม่ได้กำหนดให้ส่งคืน "ไม่ได้กำหนด"
6. วัตถุ
วัตถุเป็นชุดข้อมูลและฟังก์ชั่น วัตถุสามารถสร้างขึ้นได้โดยการดำเนินการตัวดำเนินการใหม่ตามด้วยชื่อของประเภทวัตถุที่จะสร้าง โดยการสร้างอินสแตนซ์ของประเภทวัตถุและการเพิ่มคุณสมบัติและ (หรือ) วิธีการลงไปคุณสามารถสร้างวัตถุที่กำหนดเองได้
var o = วัตถุใหม่ ();
คุณสมบัติและวิธีการใด ๆ ของประเภทวัตถุก็มีอยู่ในวัตถุที่เฉพาะเจาะจงมากขึ้น แต่ละอินสแตนซ์ของวัตถุมีคุณสมบัติและวิธีการดังต่อไปนี้:
●ตัวสร้าง (ตัวสร้าง) - บันทึกฟังก์ชั่นที่ใช้ในการสร้างวัตถุปัจจุบัน
● HasownProperty (PropertyName) - ใช้เพื่อตรวจสอบว่าคุณสมบัติที่กำหนดมีอยู่ในอินสแตนซ์ของวัตถุปัจจุบันหรือไม่ (ไม่ใช่ในต้นแบบของอินสแตนซ์) โดยที่ชื่อคุณสมบัติ (PropertyName) เป็นพารามิเตอร์จะต้องระบุในรูปแบบสตริง (ตัวอย่างเช่น: O.HasownProperty ("ชื่อ")))
● isprototypeof (วัตถุ) - ใช้เพื่อตรวจสอบว่าวัตถุที่เข้ามาเป็นต้นแบบของวัตถุอื่น
● Propertyisenumerable (PropertyName) - ใช้เพื่อตรวจสอบว่าคุณสมบัติที่กำหนดสามารถแจกแจงได้โดยใช้คำสั่ง For -In หรือไม่
● ToString () - ส่งคืนการแสดงสตริงของวัตถุ
● valueof () - ส่งคืนสตริงของวัตถุการแสดงตัวเลขหรือบูลีน โดยปกติแล้วค่าการส่งคืนของวิธี ToString () จะเหมือนกัน
3. การทดสอบขนาดเล็ก
การคัดลอกรหัสมีดังนี้:
typeof (nan)
typeof (อินฟินิตี้)
typeof (null)
typeof (ไม่ได้กำหนด)
การสัมภาษณ์หลายครั้งจะถามคำถามข้างต้น ~~
ข้างต้นเป็นคำแนะนำเกี่ยวกับประเภทข้อมูล JavaScript ทั้ง 6 ชนิด คุณเข้าใจอย่างชัดเจนหรือไม่? ฉันหวังว่าคุณจะสามารถปรับปรุงได้หลังจากอ่านบทความนี้