Hướng dẫn JS

JS TRANG CHỦ Giới thiệu JS JS Đến đâu Đầu ra JS Tuyên bố JS Cú pháp JS Bình luận JS Biến JS JS Hãy JS Const Toán tử JS Số học JS Chuyển nhượng JS Các loại dữ liệu JS Các hàm JS Đối tượng JS Sự kiện JS Chuỗi JS Phương thức chuỗi JS Tìm kiếm chuỗi JS Mẫu chuỗi JS Số JS Phương thức số JS Mảng JS Phương thức mảng JS Sắp xếp mảng JS Lặp lại mảng JS JS Array Const JS ngày Định dạng ngày JS Ngày lấy phương thức JS Phương pháp đặt ngày JS Toán JS JS ngẫu nhiên JS Booleans So sánh JS Điều kiện JS Chuyển đổi JS JS Loop cho JS Loop For In JS Loop For Of JS lặp trong khi JS Break JS lặp lại Bộ JS Bản đồ JS JS Typeof Chuyển đổi loại JS JS Bitwise JS RegExp Lỗi JS Phạm vi JS JS Hoists Chế độ nghiêm ngặt JS JS từ khóa này Hàm mũi tên JS Lớp JS JS JSON Gỡ lỗi JS Hướng dẫn kiểu JS Các phương pháp hay nhất về JS JS sai lầm Hiệu suất JS JS dành riêng từ

Phiên bản JS

Phiên bản JS JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge Lịch sử JS

Đối tượng JS

Định nghĩa đối tượng Thuộc tính đối tượng Phương thức đối tượng Hiển thị đối tượng Người truy cập đối tượng Trình tạo đối tượng Nguyên mẫu đối tượng Đối tượng lặp lại Bộ đối tượng Bản đồ đối tượng Tham chiếu đối tượng

Các hàm JS

Định nghĩa hàm Tham số chức năng Lời mời hàm Gọi hàm Áp dụng chức năng Chức năng đóng cửa

Lớp JS

Giới thiệu Lớp học Kế thừa giai cấp Lớp tĩnh

JS Async

Gọi lại JS JS không đồng bộ JS hứa JS Async / Await

JS HTML DOM

Giới thiệu DOM Phương thức DOM Tài liệu DOM Phần tử DOM DOM HTML Các biểu mẫu DOM DOM CSS Hoạt ảnh DOM Sự kiện DOM Trình xử lý sự kiện DOM Điều hướng DOM Nút DOM Bộ sưu tập DOM Danh sách nút DOM

BOM trình duyệt JS

Cửa sổ JS Màn hình JS Vị trí JS Lịch sử JS JS Navigator JS Popup Alert Thời gian JS JS Cookies

API web JS

Giới thiệu API Web API biểu mẫu web API lịch sử web API lưu trữ web API công nhân web API tìm nạp web API vị trí địa lý web

JS AJAX

Giới thiệu về AJAX AJAX XMLHttp Yêu cầu AJAX Phản hồi AJAX Tệp XML AJAX AJAX PHP AJAX ASP Cơ sở dữ liệu AJAX Ứng dụng AJAX Ví dụ về AJAX

JS JSON

Giới thiệu JSON Cú pháp JSON JSON so với XML Các loại dữ liệu JSON Phân tích cú pháp JSON JSON Stringify Đối tượng JSON Mảng JSON Máy chủ JSON JSON PHP HTML JSON JSON JSONP

JS so với jQuery

Bộ chọn jQuery jQuery HTML jQuery CSS jQuery DOM

Đồ họa JS

Đồ họa JS JS Canvas JS Plotly JS Chart.js JS Google Chart JS D3.js

Ví dụ về JS

Ví dụ về JS JS HTML DOM Đầu vào HTML JS Đối tượng HTML JS Sự kiện HTML JS Trình duyệt JS Trình chỉnh sửa JS Bài tập JS JS Quiz Chứng chỉ JS

Tham khảo JS

Đối tượng JavaScript Đối tượng DOM HTML


Lỗi JavaScript


Ném, và thử ... Bắt ... Cuối cùng

Câu trylệnh xác định một khối mã để chạy (để thử).

Câu catchlệnh xác định một khối mã để xử lý bất kỳ lỗi nào.

Câu finallylệnh xác định một khối mã để chạy bất kể kết quả.

Câu throwlệnh xác định một lỗi tùy chỉnh.


Lỗi Sẽ Xảy Ra!

Khi thực thi mã JavaScript, các lỗi khác nhau có thể xảy ra.

Lỗi có thể là lỗi mã hóa do lập trình viên thực hiện, lỗi do nhập sai, và những điều không thể lường trước khác.

Thí dụ

Trong ví dụ này, chúng tôi đã viết sai chính tả "alert" thành "adddlert" để cố tình tạo ra lỗi:

<p id="demo"></p>

<script>
try {
  adddlert("Welcome guest!");
}
catch(err) {
  document.getElementById("demo").innerHTML = err.message;
}
</script>

JavaScript bắt lỗi adddlert và thực thi mã bắt để xử lý nó.


Hãy thử và nắm bắt JavaScript

Câu trylệnh cho phép bạn xác định một khối mã để kiểm tra lỗi trong khi nó đang được thực thi.

Câu catchlệnh cho phép bạn xác định một khối mã sẽ được thực thi, nếu có lỗi xảy ra trong khối try.

Các câu lệnh JavaScript trycatch đi theo từng cặp:

try {
  Block of code to try
}
catch(err) {
  Block of code to handle errors
}


JavaScript Ném lỗi

Khi xảy ra lỗi, JavaScript thông thường sẽ dừng lại và tạo ra thông báo lỗi.

Thuật ngữ kỹ thuật cho điều này là: JavaScript sẽ ném một ngoại lệ (ném một lỗi) .

JavaScript thực sự sẽ tạo một đối tượng Lỗi với hai thuộc tính: tênthông báo .


Tuyên bố ném

Câu throwlệnh cho phép bạn tạo một lỗi tùy chỉnh.

Về mặt kỹ thuật, bạn có thể ném một ngoại lệ (ném một lỗi) .

Ngoại lệ có thể là JavaScript String, a Number, a Booleanhoặc an Object:

throw "Too big";    // throw a text
throw 500;          // throw a number

Nếu bạn sử dụng throwcùng với trycatch, bạn có thể kiểm soát luồng chương trình và tạo thông báo lỗi tùy chỉnh.


Ví dụ về xác thực đầu vào

Ví dụ này kiểm tra đầu vào. Nếu giá trị sai, một ngoại lệ (lỗi) được ném ra.

Ngoại lệ (err) bị bắt bởi câu lệnh catch và một thông báo lỗi tùy chỉnh được hiển thị:

<!DOCTYPE html>
<html>
<body>

<p>Please input a number between 5 and 10:</p>

<input id="demo" type="text">
<button type="button" onclick="myFunction()">Test Input</button>
<p id="p01"></p>

<script>
function myFunction() {
  const message = document.getElementById("p01");
  message.innerHTML = "";
  let x = document.getElementById("demo").value;
  try {
    if(x == "") throw "empty";
    if(isNaN(x)) throw "not a number";
    x = Number(x);
    if(x < 5) throw "too low";
    if(x > 10) throw "too high";
  }
  catch(err) {
    message.innerHTML = "Input is " + err;
  }
}
</script>

</body>
</html>

Xác thực HTML

Đoạn mã trên chỉ là một ví dụ.

Các trình duyệt hiện đại thường sẽ sử dụng kết hợp JavaScript và xác thực HTML tích hợp sẵn, sử dụng các quy tắc xác thực được xác định trước được xác định trong các thuộc tính HTML:

<input id="demo" type="number" min="5" max="10" step="1">

Bạn có thể đọc thêm về xác thực biểu mẫu trong chương sau của hướng dẫn này.


Tuyên bố cuối cùng

Câu finallylệnh cho phép bạn thực thi mã sau khi thử và bắt, bất kể kết quả như thế nào:

Cú pháp

try {
  Block of code to try
}
catch(err) {
  Block of code to handle errors
}
finally {
  Block of code to be executed regardless of the try / catch result
}

Thí dụ

function myFunction() {
  const message = document.getElementById("p01");
  message.innerHTML = "";
  let x = document.getElementById("demo").value;
  try {
    if(x == "") throw "is empty";
    if(isNaN(x)) throw "is not a number";
    x = Number(x);
    if(x > 10) throw "is too high";
    if(x < 5) throw "is too low";
  }
  catch(err) {
    message.innerHTML = "Error: " + err + ".";
  }
  finally {
    document.getElementById("demo").value = "";
  }
}

Đối tượng lỗi

JavaScript có một đối tượng lỗi được tích hợp sẵn để cung cấp thông tin lỗi khi xảy ra lỗi.

Đối tượng lỗi cung cấp hai thuộc tính hữu ích: tên và thông báo.


Thuộc tính đối tượng lỗi

Bất động sảnSự miêu tả
TênĐặt hoặc trả về tên lỗi
nhắnĐặt hoặc trả về một thông báo lỗi (một chuỗi)

Giá trị tên lỗi

Sáu giá trị khác nhau có thể được trả về bằng thuộc tính tên lỗi:

Tên lỗiSự miêu tả
EvalErrorĐã xảy ra lỗi trong hàm eval ()
RangeErrorMột số "nằm ngoài phạm vi" đã xảy ra
ReferenceErrorĐã xảy ra tham chiếu bất hợp pháp
Lỗi cú phápĐã xảy ra lỗi cú pháp
TypeErrorĐã xảy ra lỗi loại
URIErrorĐã xảy ra lỗi trong encodeURI ()

Sáu giá trị khác nhau được mô tả bên dưới.


Đánh giá lỗi

An EvalErrorchỉ ra một lỗi trong hàm eval ().

Các phiên bản JavaScript mới hơn không ném ra EvalError. Sử dụng SyntaxError để thay thế.


Lỗi phạm vi

A RangeErrorsẽ bị ném nếu bạn sử dụng một số nằm ngoài phạm vi giá trị pháp lý.

Ví dụ: Bạn không thể đặt số chữ số có nghĩa của một số thành 500.

Thí dụ

let num = 1;
try {
  num.toPrecision(500);   // A number cannot have 500 significant digits
}
catch(err) {
  document.getElementById("demo").innerHTML = err.name;
}

Lỗi tham chiếu

A ReferenceErrorđược ném nếu bạn sử dụng (tham chiếu) một biến chưa được khai báo:

Thí dụ

let x = 5;
try {
  x = y + 1;   // y cannot be used (referenced)
}
catch(err) {
  document.getElementById("demo").innerHTML = err.name;
}

Lỗi cú pháp

A SyntaxErrorđược đưa ra nếu bạn cố gắng đánh giá mã có lỗi cú pháp.

Thí dụ

try {
  eval("alert('Hello)");   // Missing ' will produce an error
}
catch(err) {
  document.getElementById("demo").innerHTML = err.name;
}

Loại lỗi

A TypeErrorđược ném ra nếu bạn sử dụng một giá trị nằm ngoài phạm vi của các loại mong đợi:

Thí dụ

let num = 1;
try {
  num.toUpperCase();   // You cannot convert a number to upper case
}
catch(err) {
  document.getElementById("demo").innerHTML = err.name;
}

Lỗi URI (Định danh tài nguyên đồng nhất)

A URIErrorbị ném nếu bạn sử dụng các ký tự không hợp lệ trong một hàm URI:

Thí dụ

try {
  decodeURI("%%%");   // You cannot URI decode percent signs
}
catch(err) {
  document.getElementById("demo").innerHTML = err.name;
}

Thuộc tính đối tượng lỗi không chuẩn

Mozilla và Microsoft xác định một số thuộc tính đối tượng lỗi không chuẩn:

fileName (Mozilla)
lineNumber (Mozilla)
columnNumber (Mozilla)
stack
description (Mozilla) number (Microsoft)
number (Microsoft)

Không sử dụng các thuộc tính này trong các trang web công cộng. Chúng sẽ không hoạt động trong tất cả các trình duyệt.


Hoàn thành tham chiếu lỗi

Để có tài liệu tham khảo đầy đủ về đối tượng Lỗi, hãy chuyển đến Tài liệu tham khảo lỗi JavaScript hoàn chỉnh của chúng tôi .