Hướng dẫn dùng typerror JavaScript
Lượt xem: 3445 Ngày tạo: 04/02/2021 Ngày cập nhật: 17/02/2021 Show Uncaught TypeError: Assignment to constant variable là một lỗi rất cơ bản trong Javascript, thường gặp ở những coder mới tiếp xúc với Javascript. Hiện tượng
Nguyên nhânBạn đang cố ý (hoặc vô ý) làm thay đổi dữ liệu của Hằng (Constant) trong kịch bản Javascript. Hãy luôn nhớ rằng, bạn HOÀN TOÀN KHÔNG THỂ thay đổi dữ liệu (reassign) của Hằng kể từ khi bạn gán giá trị đầu tiên (assign) cho nó. Xem lại bài Biến (Variable) và Hằng (Constant) trong Javascript. Cách khắc phục (fix)Bước 1. Xác định vị trí Statement làm thay đổi giá trị của Hằng (Constant)Trên giao diện Javascript Console của trình duyệt web, bạn click vào link báo lỗi Uncaught TypeError: Assignment to constant variable (nằm ở bên phải dòng lỗi). Bước 2. Xử lý tuỳ theo tình huốngTình huống 1: Kịch bản Javascript mà bạn đang muốn viết buộc bạn phải thay đổi giá trị của HằngHướng xử lý: Dùng Biến (variable) thay vì Hằng. Biến là thành phần phù hợp để có thể chứa dữ liệu và dữ liệu đó có thể thay đổi liên tục trong suốt kịch bản Javascript. Xem lại bài Biến (Variable) và Hằng (Constant) trong Javascript. Ví dụ:
Tình huống 2: Việc dữ liệu của Hằng (Constant) bị thay đổi là do bạn vô ý. Việc thay đổi là không cần thiết.Hướng xử lý: Xoá hoặc viết lại Statement đó để dữ liệu của Hằng không bị thay đổi Và chúng ta cũng đã đi qua mục cuối cùng trong bài hướng dẫn rồi. Nếu bạn có bất kỳ thắc mắc nào, hay không thực hiện được bước nào, hãy để lại bình luận bên dưới nhé. Nếu bạn cảm thấy bài viết hay và hữu ích, hãy để lại 1 like, share, đánh giá để ủng hộ đội ngũ biên tập của hoccode.org nhé! Chúc các bạn thực hiện thành công! Nhóm phát triển của chúng tôi vừa ra mắt website langlearning.net học tiếng Anh, Nga, Đức, Pháp, Việt, Trung, Hàn, Nhật, ... miễn phí cho tất cả mọi người.Là một website được viết trên công nghệ web Flutter vì vậy hỗ trợ rất tốt cho người học, kể cả những người học khó tính nhất. Hiện tại website đang tiếp tục được cập nhập nội dung cho phong phú và đầy đủ hơn. Mong các bạn nghé thăm và ủng hộ website mới của chúng tôi. Nội dung chính
1- Error là gì?Trước hết chúng ta hãy xem một ví dụ, trong ví dụ này tôi gọi một phương thức của một đối tượng, nhưng đối tượng này thực sự không có phương thức này, và lỗi đã xẩy ra. hello-error-example.js
Kết quả chạy ví dụ: Hãy xem luồng đi của chương trình qua hình minh họa dưới đây.
2- Bắt lỗi thông qua try-catchCác lỗi có thể xẩy ra trong thời gian chạy (runtime) của chương trình, nó có thể là một lỗi nằm ngoài dự tính của bạn. Sử dụng try-catch giúp bạn bắt và xử lý lỗi khi nó xẩy ra. Quay trở lại với ví dụ ở trên, chúng ta thêm vào try-catch để bắt và xử lý lỗi. hello-catch-example.js
Và kết quả chạy ví dụ:
Hình minh họa dưới đây giải thích về luồng đi (flow) của chương trình:
3- Khối try-catch-finallyTrên kia chúng ta đã làm quen với việc bắt lỗi thông qua khối try-catch. Việc xử lý lỗi đầy đủ là try-catch-finally. Khối finally luôn được thực thi bất kể lỗi có xẩy ra tại khối try hay không.
Ví dụ: try-catch-finally-example.js
Chạy ví dụ:
Hình minh họa dưới đây minh họa luồng đi của chương trình nếu lỗi xẩy ra trong khối try, khối finally luôn luôn được thực thi. Hình dưới đây là luồng đi của chương trình khi không có lỗi nào xẩy ra trong khối try. Trường hợp này khối finally sẽ được thực thi ngay trước khi lệnh return của khối try được thực thi. 4- Built-in ErrorsECMAScript có sẵn một vài lớp để đại diện cho một lỗi, dưới đây là hệ thống phân cấp (heirachy) của chúng. RangeError Một RangeError được ném ra nếu bạn sử dụng một con số nằm ngoài một phạm vi cho phép. error-RangeError-example.js
ReferenceError Một ReferenceError sẽ ném ra (throw) nếu bạn sử dụng một biến mà nó chưa được khai báo. error-ReferenceError-example.js
SyntaxError Một SyntaxError được ném ra (throw) nếu bạn cố gắng đánh giá (evaluate) một đoạn code mà đoạn code đó sai cú pháp. error-SyntaxError-example.js
TypeError Một TypeError được ném ra (throw) nếu bạn sử dụng một giá trị không thuộc kiểu mong đợi. Chẳng hạn lỗi xẩy ra khi bạn gọi một phương thức của một đối tượng, trong khi đối tượng này không có phương thức đó. error-TypeError-example.js
URIError Một URIError được ném ra (throw) nếu bạn sử dụng các ký tự không hợp lệ trong hàm URI: error-URIError-example.js
5- Ném ra ErrorECMAScript cho phép bạn ném ra (throw) bất kỳ một cái gì đó trong thời gian chạy của chương trình, chương trình sẽ coi như vừa có một lỗi xẩy ra. throw-any-example.js
Output:
Thông thường bạn sẽ tạo sử dụng lớp Error để tạo ra một đối tượng lỗi. Các lớp khác như SyntaxError, InternalError, RangeError, ReferenceError, SyntaxError, TypeError, URIError cũng có thể được sử dụng trong ngữ cảnh phù hợp. Một đối tượng lỗi được tạo ra thông qua lớp Error (hoặc các lớp con của nó), khi được ném ra (throw) nó sẽ chứa các thông tin quan trọng như tập tin mà lỗi phát sinh, vị trí phát sinh lỗi, và các thông tin giúp bạn dò lỗi. throw-error-example.js
Trong trường hợp đơn giản bạn có thể ném ra một thứ bất kỳ, không phải là đối tượng của lớp Error (Hoặc các lớp con của nó). Tuy nhiên khi bắt các lỗi kiểu này bạn sẽ không có các thông tin như tập tin phát ra lỗi, vị trí phát sinh lỗi,... throw-string-error-example.js
Output:
Trong ECMAScript, mỗi khối try có tương ứng duy nhất một khối cache. Nhưng trong khối try có thể có nhiều kiểu lỗi xẩy ra, trong trường hợp này bạn cần phải kiểm tra lỗi bắt được trong khối catch để đưa ra cách xử lý phù hợp tương ứng với từng loại lỗi. catch-complex-example.js
6- Các Property của ErrorTrong ECMAScript, Lỗi mà bạn bắt được có thể là một "Error object" hoặc một kiểu dữ liệu bất kỳ. Nếu là một "Error object" bạn sẽ có các thông tin quan trọng như tên tập tin gây ra lỗi, vị trí lỗi, Stack Trace,.. Có một vài property quan trọng của lớp Error:
error-properties-example.js
7- Ném tiếp lỗi (Re-throw Error)Trong khi xử lý ngoại lệ bạn có thể bắt ngoại lệ đó và xử lý hoặc có thể ném tiếp (rethrow) nó ra vòng ngoài. rethrow-example.js
Ví dụ, bắt ngoại lệ và ném tiếp (rethrow) bởi một ngoại lệ khác. rethrow-example2.js
8- Các ngoại lệ khi bắt lỗiTrong ECMAScript có những tình huống bạn nghĩ rằng sẽ có một lỗi phát sinh, nhưng nó lại không xẩy ra. Chẳng hạn phép chia một số cho 0 sẽ không gây ra lỗi, kết quả trả về là Infinity hoặc -Infinity. ex-Infinity-example.js
Lấy một giá trị không phải là số để chia cho một số, kết quả là NaN (Not a Number). ex-NaN-example.js
Bạn có thể truy cập vào một phần tử với chỉ số bất kỳ của một mảng (Array) mà không gây ra lỗi. ex-array-index-example.js
|