Computer >> Máy Tính >  >> Lập trình >> Javascript

JavaScript SyntaxError:thiếu) sau danh sách đối số Giải pháp

JavaScript dựa vào dấu ngoặc để biết nơi bắt đầu và kết thúc của các lệnh gọi hàm. Nếu bạn bỏ lỡ một đoạn cú pháp trước khi đóng một hàm, bạn sẽ gặp phải lỗi "SyntaxError:thiếu) sau danh sách đối số".

Hướng dẫn này khám phá lỗi này có nghĩa là gì và tại sao nó lại xuất hiện. Chúng tôi sẽ xem qua một ví dụ về vấn đề này để bạn có thể tìm hiểu những điều cần biết để khắc phục sự cố.

Cú phápError:thiếu) sau danh sách đối số

Thông báo "thiếu) sau danh sách đối số" cho chúng ta biết rằng có một lỗi cú pháp bên trong một lệnh gọi hàm.

Điều này có thể xảy ra nếu bạn thêm dấu phẩy vào cuối danh sách các đối số không được theo sau bởi một đối số khác.

JavaScript mong đợi một đối số khác sau mỗi dấu phẩy. Nếu JavaScript không thể tìm thấy đối số khác, mã của bạn không thể được phân tích cú pháp thành công và dấu ngoặc đóng sẽ gây ra lỗi cú pháp.

Một nguyên nhân tiềm năng khác cho giải pháp này là bao quanh dấu phẩy mà bạn cần để phân tách các đối số trong một hàm bên trong một chuỗi.

Nếu bạn gặp phải lỗi này, hãy đọc kỹ tất cả cú pháp trong mã mà lỗi JavaScript trỏ đến. Đảm bảo rằng tất cả các dấu ngoặc vuông của bạn khớp với nhau và bạn đã sử dụng đúng dấu phẩy trong lệnh gọi hàm của mình.

Một tình huống mẫu

Chúng tôi sẽ viết một chương trình để tính toán xem một học sinh đã đạt hay không đạt một bài kiểm tra ở trường. Để bắt đầu, hãy xác định điểm học sinh đã đạt được và một thông báo chúng tôi sẽ in ra bảng điều khiển để thông báo cho chúng tôi về việc học sinh đạt hay không đạt:

81% người tham gia cho biết họ cảm thấy tự tin hơn về triển vọng công việc công nghệ của mình sau khi tham gia chương trình đào tạo. Kết hợp với bootcamp ngay hôm nay.

Sinh viên tốt nghiệp bootcamp trung bình dành ít hơn sáu tháng để chuyển đổi nghề nghiệp, từ khi bắt đầu bootcamp đến khi tìm được công việc đầu tiên của họ.

var grade = 57;
var message = "This student has X their test.";

Biến JavaScript “thông báo” bao gồm ký tự giữ chỗ X. Chúng tôi sẽ thay thế điều này bằng “đạt” hoặc “không thành công” sau này trong chương trình của chúng tôi.

Nếu điểm của học sinh trên 53, thì học sinh đó đã vượt qua bài kiểm tra. Nếu không, họ đã thất bại.

Bây giờ chúng tôi đã xác định điểm của học sinh, chúng tôi có thể tính toán xem chúng đã vượt qua hay không trong bài kiểm tra của mình. Để làm như vậy, chúng tôi sẽ sử dụng câu lệnh if:

if (grade > 53) {
	message.replace("X," "passed");
} else {
	message.replace("X", "failed");
}

Chúng tôi sử dụng một câu lệnh if và một câu lệnh khác để đánh giá xem một học sinh đã đạt hay không đạt. Nếu if câu lệnh đánh giá là true, giá trị của “X” trong chuỗi “message” của chúng ta trở thành “pass”; nếu không, giá trị của “X” trở thành “không thành công”.

Bây giờ chúng tôi đã viết thư thông báo cho chúng tôi biết một học sinh đã đạt hay không đạt bài kiểm tra của họ, chúng tôi có thể in thông báo đó tới bảng điều khiển JavaScript:

console.log(message);

Hãy chạy mã của chúng tôi và xem điều gì sẽ xảy ra:

Uncaught SyntaxError: missing ) after argument list

Mã của chúng tôi trả về lỗi cú pháp.

Giải pháp

JavaScript không thể đánh giá mã của chúng tôi vì chúng tôi đã mắc lỗi bên trong một trong các lệnh gọi hàm của chúng tôi. Chúng tôi biết điều này bởi vì danh sách đối số tồn tại trong các lời gọi hàm.

Hãy xem qua các lệnh gọi hàm của chúng ta:

message.replace("X," "passed");
message.replace("X", "failed");

Trong khi câu lệnh thứ hai có vẻ đúng về mặt cú pháp, câu lệnh đầu tiên có lỗi. Chúng tôi đã thêm một dấu phẩy bên trong chuỗi đầu tiên của chúng tôi thay vì sau chuỗi đầu tiên của chúng tôi. Lưu ý câu lệnh “X” trong replace() đầu tiên gọi.

Điều này khiến danh sách đối số của chúng ta chứa hai giá trị xuất hiện sau nhau. Đây là cú pháp không chính xác. Các đối số phải được phân tách bằng dấu phẩy.

Để khắc phục lỗi này, chúng tôi sẽ di chuyển dấu phẩy từ bên trong chuỗi “X” ra bên ngoài chuỗi:

message.replace("X", "passed");

Chúng tôi đã di chuyển dấu phẩy ra bên ngoài chuỗi. Hãy chạy mã của chúng tôi và xem nó có hoạt động không.

Mã của chúng tôi trả về:

"This student has passed their test."

Mã của chúng tôi đã thực thi thành công!

Kết luận

Lỗi "SyntaxError:thiếu) sau danh sách đối số" được nêu ra nếu một lệnh gọi hàm không thể được đánh giá chính xác. Để khắc phục lỗi này, hãy đảm bảo rằng các đối số của bạn được định dạng đúng. Kiểm tra kỹ để đảm bảo rằng tất cả các đối số trong lệnh gọi hàm được phân tách bằng dấu phẩy.

Bây giờ bạn đã có kiến ​​thức cần thiết để sửa lỗi cú pháp này như một chuyên gia!