ฟังก์ชันแบบเรียกซ้ำคือฟังก์ชันที่เรียกใช้เมธอดภายในเมธอดอื่น อย่างไรก็ตาม การเรียกซ้ำที่ไม่สิ้นสุดทำให้เกิดข้อผิดพลาดขนาดสแต็ก ข้อผิดพลาดขนาดสแต็กเกิดขึ้นเนื่องจากคำขอจำนวนมากที่รอดำเนินการ ปัญหานี้เกิดขึ้นเมื่อเรียกใช้ฟังก์ชันเอง เมื่อพิจารณาแล้ว บทความนี้อธิบายว่าขนาดสแต็กการโทรสูงสุดเกินข้อผิดพลาดใน JavaScript นอกจากนี้ยังมีวิธีแก้ไขเพื่อแก้ไขข้อผิดพลาด
บทความให้บริการเราดังนี้:
- ข้อผิดพลาดขนาดสแต็กการโทรสูงสุดเกินใน JavaScript
- การใช้ if Condition เพื่อแก้ไขข้อผิดพลาดขนาดสแต็กการโทรสูงสุดเกิน
- การใช้ for loop เพื่อแก้ไขข้อผิดพลาดที่เกินขนาดสแต็กการโทรสูงสุด
ข้อผิดพลาดขนาดสแต็กการโทรสูงสุดเกินใน JavaScript
ข้อผิดพลาดขนาดสแต็กเกินเกิดขึ้นเมื่อผู้ใช้เรียกใช้ฟังก์ชันแบบเรียกซ้ำ ข้อผิดพลาดประเภทนี้เกิดขึ้นเนื่องจากการเรียกใช้เมธอดซ้ำๆ ดิ fun_user() ถูกใช้เป็นการเรียกซ้ำภายในฟังก์ชัน fun_user() ใน JavaScript เพื่อสร้างข้อผิดพลาดในหน้าต่างคอนโซล
รหัส
console.log ( 'เกินขนาดสแต็กการโทรสูงสุด' ) ;
fun_user ( ) ;
การทำงาน fun_user ( )
{
fun_user ( ) ;
}
ในรหัสนี้ the “ข้อผิดพลาดขนาดสแต็กการโทรสูงสุดเกิน” ถูกสร้างขึ้นโดยการเรียกเมธอด “fun_user()” ภายในฟังก์ชัน
รหัสแสดงข้อผิดพลาดเป็น “RangeError: เกินขนาดสแต็กการโทรสูงสุด”
มีหลายวิธีในการแก้ไขข้อผิดพลาดนี้ เช่น สำหรับวง และ งบเงื่อนไข ซึ่งสามารถใช้เพื่อจำกัดการเรียกใช้ฟังก์ชัน
โซลูชันที่ 1: การใช้ if Condition เพื่อแก้ไขขนาดการโทรสูงสุดเกินข้อผิดพลาด
เพื่อแก้ไขข้อผิดพลาด ใช้เงื่อนไข if เพื่อจำกัดขนาดสแต็กใน JavaScript ตัวอย่างเช่น รหัสได้รับด้านล่าง
รหัส
เคยเป็น ผม = 1 ;fun_user ( ผม ) ;
การทำงาน fun_user ( ผม ) {
ถ้า ( ผม < = 10 )
{
console.log ( 'ยินดีต้อนรับสู่จาวาสคริปต์' ) ;
ผม =i+ 1 ;
fun_user ( ผม ) ;
} }
คำอธิบายของรหัสมีดังนี้:
- ประการแรก ตัวแปร 'ผม' เริ่มต้นด้วยค่า 1
- หลังจากนั้น, fun_user() ใช้วิธีส่งผ่านตัวแปร 'ผม'.
- ในฟังก์ชันนี้ หากใช้เงื่อนไขที่จำกัดการวนซ้ำเป็น 10 .
- สุดท้ายข้อความ “ยินดีต้อนรับสู่จาวาสคริปต์” จะแสดงโดยใช้ปุ่ม “console.log()” กระบวนการ.
เอาท์พุต
โซลูชันที่ 2: การใช้ลูปเพื่อแก้ไขข้อผิดพลาดขนาดสแต็กการโทรสูงสุดเกิน
เพื่อแก้ไขข้อผิดพลาด ใช้ for loop เพื่อจำกัดการวนซ้ำใน JavaScript ตัวอย่างเช่น รหัสได้รับด้านล่าง
รหัส
อนุญาต เอาท์พุต = 0 ;สำหรับ ( อนุญาต ผม = 5 ; ผม > 0 ; ผม-- )
{
เอาต์พุต += เพิ่ม ( 1 , 1 ) ;
}
การทำงาน เพิ่ม ( ก, ข ) {
กลับ เอ + ข;
}
console.log ( ผลผลิต ) ;
ในรหัสนี้:
- ตัวแปร “ผลผลิต” เริ่มต้นด้วยค่า 0
- หลังจากนั้นจะใช้ for loop เพื่อทำซ้ำห้าครั้ง ในลูปนี้ เพิ่ม() วิธีการถูกเรียกโดยการส่งผ่านค่า 1
- วิธีการ เพิ่ม() ส่งคืนการบวกสองตัวแปร เอ และ ข .
- ในที่สุด บันทึก() มีการใช้เมธอดเพื่อแสดงผลลัพธ์ในหน้าต่างคอนโซล
เอาท์พุต
ผลลัพธ์ที่ได้กลับมา “10” โดยการแก้ไขข้อผิดพลาดของขนาดสแต็กการโทรสูงสุดใน JavaScript
บทสรุป
การเรียกฟังก์ชันแบบเรียกซ้ำไม่มีที่สิ้นสุดเกิดขึ้นเป็น “ข้อผิดพลาดขนาดสแต็กการโทรสูงสุดเกิน” ในจาวาสคริปต์ บทความนี้อธิบายสาเหตุของข้อผิดพลาดประเภทนี้ ต่อมามีวิธีแก้ปัญหา 2 ทาง ได้แก่ “สำหรับวง” และ “คำสั่งแบบมีเงื่อนไข” ใช้เพื่อแก้ไขข้อผิดพลาด ดังนั้น ฟังก์ชันการโทรจึงถูกจำกัดโดยใช้โซลูชันเหล่านี้