เนื่องจากข้อผิดพลาดในการออกแบบภาษาข้อโต้แย้งสามารถถือว่าเป็นอาร์เรย์
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่นศูนย์ () {
console.log (อาร์กิวเมนต์ [0]);
-
จะมี
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่นศูนย์ () {
สำหรับ (var i = 0; i <arguments.length; i ++) {
console.log (อาร์กิวเมนต์ [i]);
-
-
ใช้ประโยชน์จากความจริงที่ว่า JavaScript คือ Javasc
ตัวแปรอาร์กิวเมนต์ที่นี่ให้อินเทอร์เฟซคล้ายอาร์เรย์สำหรับอาร์กิวเมนต์จริง เนื่องจากพารามิเตอร์ตัวแปรของอาร์กิวเมนต์ที่นี่เราสามารถใช้สิ่งที่น่าสนใจนี้เพื่อทำสิ่งที่น่าสนใจเช่นการโอเวอร์โหลด
javscript reload
มีคำถามเกี่ยวกับการโอเวอร์โหลดบน stackvoerflow ดังนั้นคำตอบแรกคือ
การคัดลอกรหัสมีดังนี้:
if (typeof friend === "undefined") {
} อื่น {
-
คำตอบอื่นคือ
การคัดลอกรหัสมีดังนี้:
สวิตช์ (อาร์กิวเมนต์ความยาว) {
กรณี 0:
// อาจเกิดข้อผิดพลาด
หยุดพัก;
กรณีที่ 1:
// ทำอะไรบางอย่าง
หยุดพัก;
กรณีที่ 2:
ค่าเริ่มต้น: // ล้มเหลวในการจัดการกรณีของพารามิเตอร์เพิ่มเติม
// ทำอย่างอื่น
หยุดพัก;
-
แต่วิธีนี้ไม่ได้ดูดีจริงๆ ฟังก์ชั่นของเราในที่สุดจะกลายเป็นเช่นนี้หรือไม่?
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น ZERO1 () {
console.log ('อาร์กิวเมนต์ 1')
-
ฟังก์ชั่น ZERO2 () {
console.log ('อาร์กิวเมนต์ 2')
-
ฟังก์ชั่นศูนย์ () {
if (arguments.length == 1) {
ZERO1 ();
} อื่น{
Zero2 ();
-
-
มันดูไม่ดีเลย แม้ว่าเราจะเปลี่ยนสวิตช์ ... เคสมันก็ไม่ได้ดูดี
อาร์กิวเมนต์ JavaScript ไม่ใช่อาร์เรย์
ข้อโต้แย้งไม่ได้เป็นอาร์เรย์เสมอไปตามที่เราเห็นและบางครั้งอาจไม่
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่นสวัสดี () {
console.log (อาร์กิวเมนต์ typeof);
-
ที่นี่ประเภทของอาร์กิวเมนต์เป็นวัตถุแม้ว่าประเภทของอาร์เรย์จะเป็นวัตถุแม้ว่าเราสามารถแปลงเป็นอาร์เรย์ได้
การคัดลอกรหัสมีดังนี้:
var args = array.prototype.slice.call (อาร์กิวเมนต์);
แต่สิ่งนี้ยังแสดงให้เห็นว่านี่ไม่ใช่อาร์เรย์ แต่มีเพียงคุณสมบัติเดียวของอาร์เรย์คือความยาว นอกจากนี้
อาร์กิวเมนต์
อ้างอิงถึงฟังก์ชั่นการดำเนินการในปัจจุบัน
อาร์กิวเมนต์
อ้างอิงถึงฟังก์ชั่นที่เรียกใช้ฟังก์ชันการดำเนินการในปัจจุบัน
อาร์กิวเมนต์ความยาว
อ้างอิงถึงจำนวนอาร์กิวเมนต์ที่ส่งผ่านไปยังฟังก์ชัน