การทบทวนหนึ่งตัวของ 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 (ตัวประมวลผลหนึ่งตัวที่ลบประมวลผลตัวเลขสิบหลักและสิบกำึงแบบเดียวกับตัวประมวลผลหนึ่งตัวที่เพิ่ม แต่มันยังจะหาค่าลบของค่านี้เช่นกัน)