Ngoại lệ JavaScript "mã thông báo không mong muốn" xảy ra khi một cấu trúc ngôn ngữ cụ thể được mong đợi, nhưng một thứ khác đã được cung cấp. Đây có thể là một lỗi đánh máy đơn giản
Thông điệp
SyntaxError: expected expression, got "x" SyntaxError: expected property name, got "x" SyntaxError: expected target, got "x" SyntaxError: expected rest argument name, got "x" SyntaxError: expected closing parenthesis, got "x" SyntaxError: expected '=>' after argument list, got "x"
loại lỗi
function round[n, upperBound, lowerBound]{ if[n > upperBound] || [n < lowerBound]{ throw 'Number ' + String[n] + ' is more than ' + String[upperBound] + ' or less than ' + String[lowerBound]; }else if[n < [[upperBound + lowerBound]/2]]{ return lowerBound; }else{ return upperBound; } } // SyntaxError: expected expression, got '||'7
Có chuyện gì?
Một cấu trúc ngôn ngữ cụ thể đã được mong đợi, nhưng một thứ khác đã được cung cấp. Đây có thể là một lỗi đánh máy đơn giản
ví dụ
Biểu hiện dự kiến
Ví dụ: khi xâu chuỗi các biểu thức, không được phép có dấu phẩy ở cuối
for [let i = 0; i < 5,; ++i] { console.log[i]; } // SyntaxError: expected expression, got ']'
Đúng là bỏ dấu phẩy hoặc thêm biểu thức khác
for [let i = 0; i < 5; ++i] { console.log[i]; }
Không đủ dấu ngoặc
Đôi khi, bạn bỏ dấu ngoặc xung quanh câu lệnh
function round[n, upperBound, lowerBound]{ if[n > upperBound] || [n < lowerBound]{ throw 'Number ' + String[n] + ' is more than ' + String[upperBound] + ' or less than ' + String[lowerBound]; }else if[n < [[upperBound + lowerBound]/2]]{ return lowerBound; }else{ return upperBound; } } // SyntaxError: expected expression, got '||'8
function round[n, upperBound, lowerBound]{ if[n > upperBound] || [n < lowerBound]{ throw 'Number ' + String[n] + ' is more than ' + String[upperBound] + ' or less than ' + String[lowerBound]; }else if[n < [[upperBound + lowerBound]/2]]{ return lowerBound; }else{ return upperBound; } } // SyntaxError: expected expression, got '||'
Thoạt nhìn, dấu ngoặc có thể đúng, nhưng hãy lưu ý cách
function round[n, upperBound, lowerBound]{ if[n > upperBound] || [n < lowerBound]{ throw 'Number ' + String[n] + ' is more than ' + String[upperBound] + ' or less than ' + String[lowerBound]; }else if[n < [[upperBound + lowerBound]/2]]{ return lowerBound; }else{ return upperBound; } } // SyntaxError: expected expression, got '||'9 nằm bên ngoài dấu ngoặc. Đúng sẽ là đặt dấu ngoặc xung quanh
function round[n, upperBound, lowerBound]{ if[n > upperBound] || [n < lowerBound]{ throw 'Number ' + String[n] + ' is more than ' + String[upperBound] + ' or less than ' + String[lowerBound]; }else if[n < [[upperBound + lowerBound]/2]]{ return lowerBound; }else{ return upperBound; } } // SyntaxError: expected expression, got '||'9
Lỗi cú pháp. Mã thông báo không mong muốn trong JavaScript
"Lỗi cú pháp không bắt được. Mã thông báo bất ngờ" ngoại lệ xảy ra vì nhiều lý do
- Một dấu ngoặc, dấu ngoặc đơn hoặc dấu phẩy bị thiếu hoặc thừa trong mã của bạn
- Một trích dẫn đóng bị thiếu của một chuỗi ký tự
- Một
1// Missing comma in array literal const arr = [1, 2 3]; // Extra closing parenthesis in function call myFunction[1, 2];] // Unclosed string literal const str = 'Hello, world; // Unrecognized keyword const foo = true; bar = false;
LnRiLWNvbnRhaW5lciAudGItY29udGFpbmVyLWlubmVye3dpZHRoOjEwMCU7bWFyZ2luOjAgYXV0b30gLndwLWJsb2NrLXRvb2xzZXQtYmxvY2tzLWNvbnRhaW5lci50Yi1jb250YWluZXJbZGF0YS10b29sc2V0LWJsb2Nrcy1jb250YWluZXI9IjdmZjEwMTJkZDQ1MGExMTU3YWYxZWM0N2IzYmE4OTE0Il0geyBwYWRkaW5nOiAyNXB4O21hcmdpbi1ib3R0b206IDBweDsgfSBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc4MXB4KSB7IC50Yi1jb250YWluZXIgLnRiLWNvbnRhaW5lci1pbm5lcnt3aWR0aDoxMDAlO21hcmdpbjowIGF1dG99IH0gQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1OTlweCkgeyAudGItY29udGFpbmVyIC50Yi1jb250YWluZXItaW5uZXJ7d2lkdGg6MTAwJTttYXJnaW46MCBhdXRvfSB9IA==
Lỗi cú pháp. Mã thông báo không mong muốn trong JavaScript
Ngày 8 tháng 12 năm 2022
Hướng dẫn này là một phần của loạt bài "Các lỗi JavaScript phổ biến". Nó hoàn toàn tập trung vào việc cung cấp các giải pháp nhanh chóng và dễ dàng cho các sự cố liên quan đến JavaScript
"Lỗi cú pháp. Lỗi mã thông báo không mong đợi" trong JavaScript là lỗi cú pháp phổ biến xảy ra khi trình thông dịch JavaScript gặp mã thông báo [i. e. một đoạn mã] mà nó không mong đợi. Điều này có thể xảy ra vì nhiều lý do, chẳng hạn như
- Thiếu hoặc thừa dấu phẩy trong một mảng hoặc đối tượng theo nghĩa đen
- Dấu ngoặc đơn bị thiếu hoặc thừa trong lời gọi hàm hoặc biểu thức
- Một dấu ngoặc đóng bị thiếu hoặc thừa trong một mảng hoặc đối tượng theo nghĩa đen
- Một chuỗi ký tự không được tiết lộ
- Một từ khóa hoặc số nhận dạng không được công nhận
- Thẻ mở trong tài liệu HTML. e. g. Thẻ
2// Missing comma in array literal const arr = [1, 2 3]; // Extra closing parenthesis in function call myFunction[1, 2];] // Unclosed string literal const str = 'Hello, world; // Unrecognized keyword const foo = true; bar = false;
Dưới đây là một số ví dụ về mã có thể gây ra lỗi
// Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
Trong các ví dụ này, trình thông dịch JavaScript gặp phải các mã thông báo mà nó không mong đợi [e. g. dấu ngoặc đơn đóng bổ sung trong ví dụ thứ hai] và nó đưa ra lỗi "SyntaxError. Lỗi mã thông báo không mong muốn"
Để khắc phục lỗi này, bạn phải xem xét cẩn thận mã của mình và xác định mã thông báo không mong muốn gây ra lỗi. Khi bạn đã tìm thấy mã thông báo không mong muốn, bạn có thể sửa nó bằng cách xóa mã đó, thêm mã thông báo bị thiếu mà lẽ ra nó phải được ghép nối hoặc sửa lỗi cú pháp khiến mã thông báo không mong muốn xuất hiện
Xử lý lỗi JavaScript. Mã thông báo bất ngờ
Cải thiện bài viết
Lưu bài viết
Thích bài viết
- Cập nhật lần cuối. 20 tháng 7 năm 2021
Cải thiện bài viết
Lưu bài viết
Giống như các ngôn ngữ lập trình khác, JavaScript đã xác định một số quy tắc lập trình phù hợp. Không theo dõi họ ném một lỗi. Mã thông báo không mong muốn xảy ra nếu mã JavaScript thiếu hoặc thừa ký tự { like, ] + – var if-else var etc}. Mã thông báo không mong muốn tương tự như lỗi cú pháp nhưng cụ thể hơn. Dấu chấm phẩy [;] trong JavaScript đóng một vai trò quan trọng trong khi viết chương trình.
Cách sử dụng. Để hiểu điều này, chúng ta nên biết JavaScript cũng có một cú pháp cụ thể như trong JavaScript được kết thúc bằng dấu chấm phẩy [;] và có nhiều quy tắc như tất cả khoảng trắng/tab/dòng mới được coi là khoảng trắng. Mã JavaScript được phân tích cú pháp từ trái sang phải, đó là một quá trình trong đó trình phân tích cú pháp chuyển đổi các câu lệnh và khoảng trắng thành các phần tử duy nhất.
- mã thông báo. Tất cả các toán tử [+, -, if, other…] được đặt trước bởi công cụ JavaScript. Vì vậy, nó không thể được sử dụng sai. Nó không thể được sử dụng như một phần của tên biến
- đầu cuối dòng. Mã JavaScript phải kết thúc bằng dấu chấm phẩy [;]
- Ký tự điều khiển. Để kiểm soát mã, điều quan trọng là phải duy trì dấu ngoặc nhọn [{ }] trong mã. Nó cũng quan trọng để xác định phạm vi của mã
- Bình luận. Một dòng mã được viết sau // là một chú thích. JavaScript bỏ qua dòng này
- Khoảng trắng. Đó là một tab/không gian trong mã. Thay đổi nó không thay đổi chức năng của mã
Do đó, mã JavaScript rất nhạy cảm với bất kỳ lỗi đánh máy nào. Những ví dụ được đưa ra dưới đây giải thích những cách mà mã thông báo không mong muốn có thể xảy ra.
Ví dụ 1. Nó có mong đợi một tham số trong myFunc[mycar, ] hay không,. Vì vậy, nó đã được kích hoạt để thực thi mã này.
jav
// Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
2// Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
4 // Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
5// Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
6// Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
4 // Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
8expected expression, got ', '0____51____52____53
// Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
6expected expression, got ', '5
________ 46 ________ 57 ________ 58
expected expression, got ', '0____130____131
for [let i = 0; i < 5,; ++i] { console.log[i]; } // SyntaxError: expected expression, got ']'32
_______50____134____135____132
expected expression, got ', '0
for [let i = 0; i < 5,; ++i] { console.log[i]; } // SyntaxError: expected expression, got ']'38
// Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
6for [let i = 0; i < 5; ++i] { console.log[i]; }20
// Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
6expected expression, got ', '7
for [let i = 0; i < 5; ++i] { console.log[i]; }23
// Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
6for [let i = 0; i < 5; ++i] { console.log[i]; }25
_______46____227
// Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
6for [let i = 0; i < 5; ++i] { console.log[i]; }29
// Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
20Đầu ra.
for [let i = 0; i < 5; ++i] { console.log[i]; }8
Ví dụ 2. Mã thông báo không mong muốn ',' xảy ra sau i=0 mà javascript không thể nhận ra. Chúng tôi có thể loại bỏ lỗi ở đây bằng cách loại bỏ thêm.
jav
// Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
2// Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
22// Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
23// Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
24// Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
25// Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
26expected expression, got ', '5
// Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
20Đầu ra.
expected expression, got ', '
Ví dụ 3. Một mã thông báo không mong muốn ']' xảy ra sau i++ mà JavaScript không thể nhận ra. Chúng tôi có thể xóa lỗi ở đây bằng cách xóa thêm].
jav
// Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
2// Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
22// Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
41// Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
24// Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
25// Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
44expected expression, got ', '5
// Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
20Đầu ra
for [let i = 0; i < 5,; ++i] { console.log[i]; } // SyntaxError: expected expression, got ']'3
Ví dụ 4. Ở cuối phần thân của if, JavaScript đã mong đợi dấu ngoặc nhọn “}” nhưng thay vào đó, nó nhận được mã thông báo khác không mong muốn. Nếu chúng ta đặt } ở cuối phần thân của if.
jav
// Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
2expected expression, got ', '7
// Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
49// Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
50 // Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
51_______46____453____454
// Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
55// Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
6// Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
57 // Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
24expected expression, got ', '0____453____461
// Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
55// Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
6expected expression, got ', '5
// Missing comma in array literal
const arr = [1, 2 3];
// Extra closing parenthesis in function call
myFunction[1, 2];]
// Unclosed string literal
const str = 'Hello, world;
// Unrecognized keyword
const foo = true;
bar = false;
20Đầu ra
for [let i = 0; i < 5; ++i] { console.log[i]; }2
Tương tự, việc sử dụng bất kỳ mã thông báo nào không cần thiết sẽ gây ra loại lỗi này. Chúng tôi có thể loại bỏ lỗi này bằng cách ràng buộc bằng cách tuân theo các quy tắc lập trình của JavaScript.
Ghi chú cá nhân của tôi arrow_drop_up
Tiết kiệm