วัตถุ arguments ECMAScript
- หน้าก่อนหน้า สรุปฟังก์ชัน
- หน้าต่อไป เป้าหมายฟังก์ชัน
ตัวแปร arguments
ในรหัสฟังก์ชัน นักพัฒนาใช้ตัวแปรพิเศษ argumentsไม่จำเป็นต้องระบุชื่อตัวแปรจึงสามารถเข้าถึงค่าของเขาได้
ตัวอย่าง ในฟังก์ชัน sayHi() ตัวแปรที่ 1 คือ message แต่สามารถใช้ arguments[0] รับค่าที่เหมือนกัน ซึ่งคือค่าตัวแปรที่ 1 (ตัวแปรที่ 1 ตั้งอยู่ที่ตำแหน่ง 0 ตัวแปรที่ 2 ตั้งอยู่ที่ตำแหน่ง 1 และอย่างนั้นต่อไป)
ดังนั้น ไม่จำเป็นต้องระบุชื่อตัวแปร ก็สามารถเขียนฟังก์ชันใหม่ได้
function sayHi() { if (arguments[0] == "bye") { return; } alert(arguments[0]); }
ตรวจสอบจำนวนตัวแปร
ยังสามารถใช้ตัวแปร arguments ในการตรวจสอบจำนวนตัวแปรที่ส่งมาให้กับฟังก์ชันด้วยการอ้างอิงค่าของ arguments.length
รหัสด้านล่างนี้จะแสดงจำนวนตัวแปรที่ใช้ในการเรียกฟังก์ชันในแต่ละครั้ง
function howManyArgs() { alert(arguments.length); } howManyArgs("string", 45); howManyArgs(); howManyArgs(12);
รหัสที่ออกมาจะแสดงค่า "2" "0" และ "1" ตามลำดับ
หมายเหตุ:ต่างจากภาษาการออกแบบโปรแกรมอื่น ๆ ECMAScript จะไม่ตรวจสอบจำนวนตัวแปรที่ส่งมาให้กับฟังก์ชัน ซึ่งเท่ากับจำนวนตัวแปรที่กำหนดในการเรียกฟังก์ชัน ฟังก์ชันที่ถูกกำหนดโดยผู้พัฒนาสามารถรับอัตราการส่งมาในจำนวนที่ไม่จำกัด (ตามเอกสารของ Netscape สามารถรับได้ถึง 255 ตัวแปร) โดยไม่มีข้อผิดพลาดใดๆ ตัวแปรที่ขาดไปจะถูกส่งมาให้กับฟังก์ชันด้วยค่า undefined และตัวแปรที่เกินจำนวนที่กำหนดจะถูกละเลย
การแสดงที่เหมือนการนำฟังก์ชันที่เรียกด้วย
ใช้ตัวแปร arguments ในการตรวจสอบจำนวนตัวแปรที่ถูกส่งมาให้กับฟังก์ชัน ซึ่งสามารถแสดงความหมายเหมือนการนำฟังก์ชันที่เรียกด้วย
function doAdd() { if(arguments.length == 1) { alert(arguments[0] + 5); } else if(arguments.length == 2) { alert(arguments[0] + arguments[1]); } } doAdd(10); // ออก "15" doAdd(40, 20); // ออก "60"
เมื่อมีตัวแปรเดียว ฟังก์ชัน doAdd() จะเพิ่มตัวแปรดังกล่าวด้วย 5 ถ้ามีตัวแปรสองตัว จะเรียกการเพิ่มตัวแปรทั้งสองตัวและกลับค่าเป็นผลการเพิ่ม ดังนั้น doAdd(10) จะกลับค่า "15" และ doAdd(40, 20) จะกลับค่า "60"
ถึงแม้จะไม่ดีเท่านั้น แต่มันเพียงพอที่จะหลีกเลี่ยงความจำกัดของ ECMAScript นี้
- หน้าก่อนหน้า สรุปฟังก์ชัน
- หน้าต่อไป เป้าหมายฟังก์ชัน