การทบทวนหนึ่งตัวของ ECMAScript
- หน้าก่อนหน้า ประเภทของการอ้างอิง ECMAScript
- หน้าต่อไป ตัวประมวลผลที่ตัวเลข
ตัวคำสั่งเดียวเดียวมีเพียงตัวแปรหรือค่าที่ต้องการปฏิบัติการเดียว พวกนี้เป็นตัวคำสั่งที่เรียบง่ายที่สุดใน ECMAScript
delete
delete ตัวคำสั่งลบอ้างอิงสำหรับ 속성หรือวิธีที่กำหนดก่อนหน้าของตัวแปรประเภท Object ตัวอย่าง:
var o = new Object; o.name = "David"; alert(o.name); //แสดง "David" delete o.name; alert(o.name); //แสดง "undefined"
ในตัวอย่างนี้ การลบองค์ประกอบ name หมายถึงการยกเลิกอ้างอิงต่อมัน และใช้ค่า undefined (คือค่าของตัวแปรที่ยังไม่ได้เริ่มต้น) สำหรับมัน
ตัวเลขลบ delete ไม่สามารถลบองค์ประกอบที่นักพัฒนาไม่ได้เสริมไว้ ตัวอย่างเช่น บรรทัดต่อไปนี้จะทำให้เกิดข้อผิดพลาด
delete o.toString;
แม้ว่า toString จะเป็นชื่อเมธอดที่มีประโยชน์ แต่บรรทัดนี้จะทำให้เกิดข้อผิดพลาด เพราะเมธอด toString() คือเมธอดที่มีมาตั้งแต่เอกมัธยาภิธาน ECMAScript ไม่ใช่ที่มีมาจากนักพัฒนา
void
ตัวเลขว่าง void กลับมาด้วย undefined สำหรับทุกค่า ซึ่งทั่วไปแล้วใช้เพื่อป้องกันการแสดงค่าที่ไม่ควรแสดง ตัวอย่างเช่น เมื่อเรียกฟังก์ชัน JavaScript จากองค์ประกอบ <a> ของ HTML ฟังก์ชันต้องไม่มีค่ากลับ เช่นนี้
<a href="javascript:window.open('about:blank')">คลิกฉัน</a>
หากใส่บรรทัดนี้เข้าไปในหน้าเว็บ HTML และคลิกลิงก์ จะเห็นว่าข้อความ "[object]" แสดงบนหน้าจอTIY
นี่เพราะว่าฟังก์ชัน window.open() กลับมาด้วยอ้างอิงถึงหน้าต่างที่เปิดใหม่ และหน้าต่างนี้จะถูกแปลงเป็นข้อความที่จะแสดง
เพื่อป้องกันปรากฏการณ์นี้ สามารถใช้ตัวเลขว่าง void ที่เรียกใช้ฟังก์ชัน window.open() ได้
<a href="javascript:void(window.open('about:blank'))">คลิกฉัน</a>
นี่ทำให้การเรียกใช้ window.open() กลับมาด้วย undefined ซึ่งไม่ใช่ค่าที่มีประโยชน์ และจะไม่แสดงในหน้าต่างบราวเซอร์
คำเตือน:อย่าลืมว่าฟังก์ชันที่ไม่มีค่ากลับส่งทุกครั้งเป็น undefined
ตัวเลขเพิ่ม/ลดปริมาณ
สองตัวเลขที่ถูกยืมมาจาก C (และ Java) คือตัวเลขเพิ่มปริมาณและตัวเลขลดปริมาณ
ตัวเลขเพิ่มปริมาณเป็นการเพิ่มค่าจาก 1 โดยใช้รูปแบบเพิ่มลดค่าก่อนตัวแปร (++)
var iNum = 10; ++iNum;
บรรทัดที่สองเพิ่มค่าของ iNum ไปที่ 11 ซึ่งเท่ากับ
var iNum = 10; iNum = iNum + 1;
ในที่สุด ตัวเลขลดปริมาณเป็นการลดค่าจาก 1 โดยใช้รูปแบบเพิ่มลดค่าก่อนตัวแปร (--)
var iNum = 10; --iNum;
ในตัวอย่างนี้ บรรทัดที่สองลดค่าของ iNum ไปที่ 9
ในการใช้ตัวเลขหน้าบวก ต้องจำแนกว่าการเพิ่มและลดปริมาณเกิดขึ้นก่อนการคำนวณสัญญาณ์ที่กำหนดไว้
var iNum = 10; --iNum; alert(iNum); // แสดง "9" alert(--iNum); // แสดง "8" alert(iNum); // แสดง "8"
บรรทัดที่สองขับความเป็นธรรมดาทางหลังของ iNum ลง บรรทัดที่สามแสดงผลลัพธ์ ("9") บรรทัดที่สี่ขับความเป็นธรรมดาหน้าของ iNum อีกครั้ง แต่ครั้งนี้การขับความเป็นธรรมดาหน้าและการแสดงผลมีท่าทีในเส้นคำเดียวกัน แสดงผลคือ "8" เพื่อแสดงว่าทุกการขับความเป็นธรรมดาทั้งหมดได้เรียกใช้แล้ว บรรทัดที่ห้าขับอีกครั้งค่า "8"
ในการแสดงความเป็นธรรมดาทางคณิตศาสตร์ ความสำคัญของการเพิ่มและลดหน้าตัวมีความสำคัญเดียวกัน ดังนั้น ควรคำนวณในลำดับจากซ้ายไปขวา
var iNum1 = 2; var iNum2 = 20; var iNum3 = --iNum1 + ++iNum2; // สมมติว่า "22" var iNum4 = iNum1 + iNum2; // สมมติว่า "22"
ในโค้ดที่แสดงข้างต้น iNum3 มีค่า 22 เนื่องจากความเป็นธรรมดาที่ต้องคำนวณคือ 1 + 21 ตัวแปร iNum4 มีค่า 22 ด้วย และมันก็คือ 1 + 21
เครื่องมือการแสดงความเป็นธรรมดาหลัง/หน้า
มีเครื่องมือสองที่ยืมมาจาก C (และ Java) คือ เครื่องมือการแสดงความเป็นธรรมดาหลังและเครื่องมือการแสดงความเป็นธรรมดาหน้า
การแสดงความเป็นธรรมดาหลังยังเพิ่มค่าเป็น 1 ด้วยรูปแบบใช้สองขีดเพิ่มที่ตามหลังตัวแปร (++)
var iNum = 10; iNum++;
คาดได้ว่า การแสดงความเป็นธรรมดาหลังมีการลดค่าเป็น 1 ด้วยรูปแบบใช้สองขีดลอยที่ตามหลังตัวแปร (--)
var iNum = 10; iNum--;
บรรทัดที่สองลดค่าของ iNum ลงเป็น 9
ต่างกับเครื่องมือการแสดงความเป็นธรรมดาหน้า การแสดงความเป็นธรรมดาหลังมีการเพิ่มหรือลดหลังจากการคำนวณความเป็นธรรมดาที่มีเครื่องมือนั้น
var iNum = 10; iNum--; alert(iNum); // แสดง "9" alert(iNum--); // แสดง "9" alert(iNum); // แสดง "8"
ในตัวอย่างของการใช้เครื่องมือการแสดงความเป็นธรรมดาหน้ามากกว่า บรรทัดที่สองขับความเป็นธรรมดาทางหลังของ iNum ลง บรรทัดที่สามแสดงผลลัพธ์ ("9") บรรทัดที่สี่ยังแสดงค่าของ iNum อีกครั้ง แต่ครั้งนี้ใช้เครื่องมือการแสดงความเป็นธรรมดาหลังในเส้นคำเดียวกัน ดังนั้นค่าที่แสดงคือ "9" เนื่องจากการแสดงความเป็นธรรมดาหลังมีท่าทีหลังจากการคำนวณความเป็นธรรมดา ดังนั้นค่าที่แสดงคือ "9" หลังจากที่ทำบรรทัดที่ห้า alert ฟังก์ชันแสดงคือ "8" เนื่องจากหลังจากที่ทำบรรทัดที่สี่และก่อนที่จะทำบรรทัดที่ห้า มีการทำการแสดงความเป็นธรรมดาหลัง
ในการแสดงความเป็นธรรมดาทางคณิตศาสตร์ ความสำคัญของการเพิ่มและลดหลังตัวมีความสำคัญเดียวกัน ดังนั้น ควรคำนวณในลำดับจากซ้ายไปขวา
var iNum1 = 2; var iNum2 = 20; var iNum3 = iNum1-- + iNum2++; // สมมติว่า "22" var iNum4 = iNum1 + iNum2; // สมมติว่า "22"
ในรหัสที่อยู่ด้านหน้า iNum3 มีค่า 22 เพราะตัวแปลของ iNum3 ต้องการหาค่าของ 2 + 20 ตัวแปลของ iNum4 มีค่า 22 แต่มันหาค่าของ 1 + 21 เพราะการเพิ่มและลบเกิดขึ้นหลังจากที่ iNum3 ได้รับค่าแล้ว
ตัวประมวลผลหนึ่งตัวที่เพิ่มและลบ
หลายๆ คนเป็นที่รู้จักกันดีกับตัวประมวลผลหนึ่งตัวที่เพิ่มและลบ ซึ่งใช้ใน ECMAScript ตามที่คุณเรียนที่โรงเรียนมัธยมปลาย
ตัวประมวลผลหนึ่งตัวที่เพิ่มมีความหมายที่ไม่มีผลต่อตัวเลข
var iNum = 20; iNum = +iNum; alert(iNum); // ออก "20"
รหัสนี้ประยุกต์ตัวประมวลผลหนึ่งตัวที่เพิ่มกับตัวเลข 20 และยังคงออกมาเป็น 20
ถึงแม้ว่าตัวประมวลผลหนึ่งตัวที่เพิ่มจะไม่มีผลต่อตัวเลข แต่มันมีประโยชน์มากต่อตัวแปลของศัพท์ โดยจะแปลงตัวแปลของศัพท์ให้เป็นตัวเลข
var sNum = "20"; alert(typeof sNum); // ออก "string" var iNum = +sNum; alert(typeof iNum); // ออก "number"
รหัสนี้แปลงตัวแปลของศัพท์ "20" ให้เป็นตัวเลขแท้จริง ขณะที่ตัวประมวลผลหนึ่งตัวที่เพิ่มประมวลผลตัวแปลของศัพท์ด้วยวิธีที่คล้ายกับ parseInt() มีความแตกต่างหลักๆ คือตัวประมวลผลหนึ่งตัวสามารถแปลงตัวแปลของศัพท์ที่เริ่มด้วย "0x" (แสดงตัวเลขสิบกำึง) ให้เป็นค่าสิบหลัก ดังนั้น การแปลง "010" จะได้ 10 ตลอดไป และ "0xB" จะถูกแปลงเป็น 11
ในทางกลับกัน ตัวประมวลผลหนึ่งตัวที่ลบเป็นการหาค่าลบของตัวเลข (เช่น 20 ถูกแปลงเป็น -20):
var iNum = 20; iNum = -iNum; alert(iNum); // ออก "-20"
เช่นเดียวกับตัวประมวลผลหนึ่งตัวที่เพิ่ม ตัวประมวลผลหนึ่งตัวที่ลบจะแปลงตัวแปลของศัพท์ให้เป็นตัวเลขที่ใกล้เคียง และยังหาค่าลบของค่านี้ด้วย ตัวอย่าง:
var sNum = "20"; alert(typeof sNum); // ออก "string" var iNum = -sNum; alert(iNum); // ออก "-20" alert(typeof iNum); // ออก "number"
ในรหัสที่อยู่ด้านบน ตัวประมวลผลหนึ่งตัวที่ลบจะแปลงตัวแปลของศัพท์ "-20" ให้เป็น -20 (ตัวประมวลผลหนึ่งตัวที่ลบประมวลผลตัวเลขสิบหลักและสิบกำึงแบบเดียวกับตัวประมวลผลหนึ่งตัวที่เพิ่ม แต่มันยังจะหาค่าลบของค่านี้เช่นกัน)
- หน้าก่อนหน้า ประเภทของการอ้างอิง ECMAScript
- หน้าต่อไป ตัวประมวลผลที่ตัวเลข