JavaScript อาศัยวงเล็บเพื่อให้ทราบว่าการเรียกใช้ฟังก์ชันเริ่มต้นและสิ้นสุดที่ใด หากคุณพลาดไวยากรณ์ก่อนที่จะปิดฟังก์ชัน คุณจะพบข้อผิดพลาด "SyntaxError:missing ) หลังจากรายการอาร์กิวเมนต์"
คู่มือนี้จะสำรวจความหมายของข้อผิดพลาดนี้และสาเหตุที่ทำให้เกิดข้อผิดพลาด เราจะยกตัวอย่างของปัญหานี้เพื่อให้คุณได้เรียนรู้สิ่งที่จำเป็นต้องรู้เพื่อแก้ไขปัญหา
SyntaxError:missing ) หลังรายการอาร์กิวเมนต์
ข้อความ "หายไป ) หลังจากรายการอาร์กิวเมนต์" บอกเราว่ามีข้อผิดพลาดทางไวยากรณ์ในการเรียกใช้ฟังก์ชัน
สิ่งนี้อาจเกิดขึ้นหากคุณเพิ่มเครื่องหมายจุลภาคที่ส่วนท้ายของรายการอาร์กิวเมนต์ที่ไม่ได้ตามด้วยอาร์กิวเมนต์อื่น
JavaScript ต้องการอาร์กิวเมนต์อื่นหลังจากแต่ละจุลภาค หาก JavaScript ไม่พบอาร์กิวเมนต์อื่น โค้ดของคุณไม่สามารถแยกวิเคราะห์ได้สำเร็จ และวงเล็บปิดจะทำให้เกิดข้อผิดพลาดทางไวยากรณ์
สาเหตุที่เป็นไปได้อีกประการสำหรับโซลูชันนี้คือ การใส่เครื่องหมายจุลภาคที่คุณต้องการเพื่อแยกอาร์กิวเมนต์ในฟังก์ชันภายในสตริง
หากคุณพบข้อผิดพลาดนี้ โปรดอ่านไวยากรณ์ทั้งหมดในโค้ดที่ข้อผิดพลาด JavaScript ชี้ไปอย่างละเอียดถี่ถ้วน ตรวจสอบว่าวงเล็บทั้งหมดตรงกัน และคุณใช้เครื่องหมายจุลภาคในการเรียกใช้ฟังก์ชันอย่างถูกต้อง
ตัวอย่างสถานการณ์
เราจะเขียนโปรแกรมที่คำนวณว่านักเรียนสอบผ่านหรือสอบตกที่โรงเรียนหรือไม่ ในการเริ่มต้น ให้กำหนดเกรดที่นักเรียนได้รับและข้อความที่เราจะพิมพ์ไปที่คอนโซลเพื่อแจ้งให้เราทราบว่านักเรียนผ่านหรือล้มเหลว:
81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้
ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก
var grade = 57; var message = "This student has X their test.";
"ข้อความ" ของตัวแปร JavaScript มีตัวอักษรตัวแทน X เราจะแทนที่สิ่งนี้ด้วย "ผ่าน" หรือ "ล้มเหลว" ในภายหลังในโปรแกรมของเรา
หากเกรดของนักเรียนเกิน 53 แสดงว่าผ่านการทดสอบ มิฉะนั้นพวกเขาล้มเหลว
ตอนนี้เราได้กำหนดเกรดของนักเรียนแล้ว เราสามารถคำนวณได้ว่าพวกเขาผ่านการทดสอบหรือไม่ผ่าน ในการทำเช่นนั้น เราจะใช้คำสั่ง if:
if (grade > 53) { message.replace("X," "passed"); } else { message.replace("X", "failed"); }
เราใช้คำสั่ง if และ one else เพื่อประเมินว่านักเรียนสอบผ่านหรือล้มเหลว ถ้า if
คำสั่งประเมินเป็นจริงค่าของ "X" ในสตริง "ข้อความ" ของเราจะกลายเป็น "ผ่าน"; มิฉะนั้นค่าของ "X" จะกลายเป็น "ล้มเหลว"
เมื่อเราได้เขียนข้อความที่แจ้งให้เราทราบว่านักเรียนผ่านการทดสอบหรือไม่ เราสามารถพิมพ์ข้อความนั้นไปยังคอนโซล JavaScript:
console.log(message);
เรียกใช้รหัสของเราและดูว่าเกิดอะไรขึ้น:
Uncaught SyntaxError: missing ) after argument list
รหัสของเราส่งคืนข้อผิดพลาดทางไวยากรณ์
การแก้ปัญหา
JavaScript ไม่สามารถประเมินโค้ดของเราได้ เนื่องจากเราได้ทำผิดพลาดในการเรียกใช้ฟังก์ชันของเรา เราทราบสิ่งนี้เนื่องจากรายการอาร์กิวเมนต์มีอยู่ในการเรียกใช้ฟังก์ชัน
มาดูการเรียกฟังก์ชันของเรากัน:
message.replace("X," "passed"); message.replace("X", "failed");
แม้ว่าข้อความสั่งที่สองจะดูเหมือนถูกต้องตามหลักไวยากรณ์ แต่คำสั่งแรกมีข้อผิดพลาด เราได้เพิ่มเครื่องหมายจุลภาคในสตริงแรกของเรา แทนที่จะใส่หลังสตริงแรกของเรา สังเกตคำสั่ง “X” ใน replace()
. แรก เรียก.
สิ่งนี้ทำให้รายการอาร์กิวเมนต์ของเรามีค่าสองค่าที่ปรากฏต่อจากกัน นี่เป็นไวยากรณ์ที่ไม่ถูกต้อง อาร์กิวเมนต์ต้องคั่นด้วยเครื่องหมายจุลภาค
เพื่อแก้ไขข้อผิดพลาดนี้ เราจะย้ายเครื่องหมายจุลภาคจากภายในสตริง “X” ไปยังนอกสตริง:
message.replace("X", "passed");
เราได้ย้ายเครื่องหมายจุลภาคออกไปนอกสตริง มารันโค้ดของเรากันและดูว่าใช้งานได้หรือไม่
รหัสของเราส่งคืน:
"This student has passed their test."
รหัสของเราดำเนินการสำเร็จแล้ว!
บทสรุป
เกิดข้อผิดพลาด "SyntaxError:missing ) หลังจากรายการอาร์กิวเมนต์" หากไม่สามารถประเมินการเรียกใช้ฟังก์ชันได้อย่างถูกต้อง ในการแก้ไขข้อผิดพลาดนี้ ตรวจสอบให้แน่ใจว่าอาร์กิวเมนต์ของคุณมีรูปแบบที่ถูกต้อง ตรวจสอบอีกครั้งว่าอาร์กิวเมนต์ทั้งหมดในการเรียกใช้ฟังก์ชันถูกคั่นด้วยเครื่องหมายจุลภาค
ตอนนี้คุณมีความรู้ที่จำเป็นในการแก้ไขข้อผิดพลาดทางไวยากรณ์นี้อย่างผู้เชี่ยวชาญแล้ว!