Thử nắm bắt JavaScript có thực hành tốt không?

JavaScript hỗ trợ một tập hợp nhỏ gọn các câu lệnh, đặc biệt là các câu lệnh điều khiển luồng mà bạn có thể sử dụng để kết hợp nhiều tính tương tác trong ứng dụng của mình. Chương này cung cấp một cái nhìn tổng quan về những tuyên bố này

Tham chiếu JavaScript chứa thông tin chi tiết đầy đủ về các câu lệnh trong chương này. Ký tự dấu chấm phẩy (

var x = 1;
{
  var x = 2;
}
console.log(x); // 2
0) được dùng để ngăn cách các câu lệnh trong mã JavaScript

Bất kỳ biểu thức JavaScript nào cũng là một câu lệnh. Xem Biểu thức và toán tử để biết thông tin đầy đủ về biểu thức

Câu lệnh cơ bản nhất là câu lệnh khối, được sử dụng để nhóm các câu lệnh. Khối được giới hạn bởi một cặp dấu ngoặc nhọn

{
  statement1;
  statement2;
  // …
  statementN;
}

Câu lệnh khối thường được sử dụng với câu lệnh luồng điều khiển (_______0_______1,

var x = 1;
{
  var x = 2;
}
console.log(x); // 2
2,
var x = 1;
{
  var x = 2;
}
console.log(x); // 2
3)

while (x < 10) {
  x++;
}

Ở đây,

var x = 1;
{
  var x = 2;
}
console.log(x); // 2
4 là câu lệnh chặn

Ghi chú.

var x = 1;
{
  var x = 2;
}
console.log(x); // 2
Các biến được khai báo 5 không nằm trong phạm vi khối, nhưng nằm trong phạm vi hàm hoặc tập lệnh chứa và tác động của việc đặt chúng vẫn tồn tại ngoài chính khối đó. Ví dụ

var x = 1;
{
  var x = 2;
}
console.log(x); // 2

Điều này xuất ra ___0_______6 vì câu lệnh

var x = 1;
{
  var x = 2;
}
console.log(x); // 2
7 trong khối có cùng phạm vi với câu lệnh
var x = 1;
{
  var x = 2;
}
console.log(x); // 2
7 trước khối. (Trong C hoặc Java, mã tương đương sẽ có kết quả là _________9. )

Hiệu ứng phạm vi này có thể được giảm thiểu bằng cách sử dụng

if (condition) {
  statement1;
} else {
  statement2;
}
0 hoặc
if (condition) {
  statement1;
} else {
  statement2;
}
1

Một câu lệnh có điều kiện là một tập hợp các lệnh thực hiện nếu một điều kiện cụ thể là đúng. JavaScript hỗ trợ hai câu điều kiện.

if (condition) {
  statement1;
} else {
  statement2;
}
2 và
if (condition) {
  statement1;
} else {
  statement2;
}
3

Sử dụng câu lệnh

var x = 1;
{
  var x = 2;
}
console.log(x); // 2
1 để thực hiện câu lệnh nếu điều kiện logic là
if (condition) {
  statement1;
} else {
  statement2;
}
5. Sử dụng mệnh đề tùy chọn
if (condition) {
  statement1;
} else {
  statement2;
}
6 để thực hiện một câu lệnh nếu điều kiện là
if (condition) {
  statement1;
} else {
  statement2;
}
7

Một câu lệnh

var x = 1;
{
  var x = 2;
}
console.log(x); // 2
1 trông như thế này

if (condition) {
  statement1;
} else {
  statement2;
}

Ở đây,

if (condition) {
  statement1;
} else {
  statement2;
}
9 có thể là bất kỳ biểu thức nào có giá trị là
if (condition) {
  statement1;
} else {
  statement2;
}
5 hoặc
if (condition) {
  statement1;
} else {
  statement2;
}
7. (Xem phần giải thích về những gì đánh giá thành
if (condition) {
  statement1;
} else {
  statement2;
}
5 và
if (condition) {
  statement1;
} else {
  statement2;
}
7. )

Nếu

if (condition) {
  statement1;
} else {
  statement2;
}
9 đánh giá thành
if (condition) {
  statement1;
} else {
  statement2;
}
5, thì
if (condition1) {
  statement1;
} else if (condition2) {
  statement2;
} else if (conditionN) {
  statementN;
} else {
  statementLast;
}
6 được thực thi. Mặt khác,
if (condition1) {
  statement1;
} else if (condition2) {
  statement2;
} else if (conditionN) {
  statementN;
} else {
  statementLast;
}
7 được thực thi.
if (condition1) {
  statement1;
} else if (condition2) {
  statement2;
} else if (conditionN) {
  statementN;
} else {
  statementLast;
}
6 và
if (condition1) {
  statement1;
} else if (condition2) {
  statement2;
} else if (conditionN) {
  statementN;
} else {
  statementLast;
}
7 có thể là bất kỳ câu lệnh nào, bao gồm cả câu lệnh
var x = 1;
{
  var x = 2;
}
console.log(x); // 2
1 lồng nhau

Bạn cũng có thể kết hợp các câu lệnh bằng cách sử dụng

if (condition) {
  // Statements for when condition is true
  // …
} else {
  // Statements for when condition is false
  // …
}
1 để kiểm tra nhiều điều kiện theo trình tự, như sau

if (condition1) {
  statement1;
} else if (condition2) {
  statement2;
} else if (conditionN) {
  statementN;
} else {
  statementLast;
}

Trong trường hợp có nhiều điều kiện, chỉ điều kiện logic đầu tiên có giá trị là

if (condition) {
  statement1;
} else {
  statement2;
}
5 mới được thực hiện. Để thực thi nhiều câu lệnh, hãy nhóm chúng trong một câu lệnh khối (______35_______3)

Thực hành tốt nhất

Nói chung, bạn nên luôn luôn sử dụng các câu lệnh khối—đặc biệt là khi lồng các câu lệnh

var x = 1;
{
  var x = 2;
}
console.log(x); // 2
1

if (condition) {
  // Statements for when condition is true
  // …
} else {
  // Statements for when condition is false
  // …
}

Nói chung, tốt nhất là không sử dụng

if (condition) {
  statement1;
} else {
  statement2;
}
2 với một nhiệm vụ như
if (condition) {
  // Statements for when condition is true
  // …
} else {
  // Statements for when condition is false
  // …
}
6 làm điều kiện

if (x = y) {
  // statements here
}

Tuy nhiên, trong trường hợp hiếm hoi bạn thấy mình muốn làm điều gì đó như vậy, tài liệu

var x = 1;
{
  var x = 2;
}
console.log(x); // 2
3 có một phần hướng dẫn về cú pháp thực hành tốt nhất chung mà bạn nên biết và làm theo

Giá trị giả

Các giá trị sau ước tính thành

if (condition) {
  statement1;
} else {
  statement2;
}
7 (còn được gọi là giá trị Sai)

  • if (condition) {
      statement1;
    } else {
      statement2;
    }
    
    7
  • if (x = y) {
      // statements here
    }
    
    0
  • if (x = y) {
      // statements here
    }
    
    1
  • if (x = y) {
      // statements here
    }
    
    2
  • if (x = y) {
      // statements here
    }
    
    3
  • chuỗi rỗng (
    if (x = y) {
      // statements here
    }
    
    4)

Tất cả các giá trị khác—bao gồm tất cả các đối tượng—được đánh giá là

if (condition) {
  statement1;
} else {
  statement2;
}
5 khi được chuyển đến một câu lệnh có điều kiện

Ghi chú. Đừng nhầm lẫn các giá trị boolean nguyên thủy

if (condition) {
  statement1;
} else {
  statement2;
}
5 và
if (condition) {
  statement1;
} else {
  statement2;
}
7 với các giá trị đúng và sai của đối tượng
if (x = y) {
  // statements here
}
8

Ví dụ

const b = new Boolean(false);
if (b) {
  // this condition evaluates to true
}
if (b == true) {
  // this condition evaluates to false
}

Ví dụ

Trong ví dụ sau, hàm

if (x = y) {
  // statements here
}
9 trả về
if (condition) {
  statement1;
} else {
  statement2;
}
5 nếu số lượng ký tự trong đối tượng
const b = new Boolean(false);
if (b) {
  // this condition evaluates to true
}
if (b == true) {
  // this condition evaluates to false
}
1 là ba. Nếu không, nó sẽ hiển thị một cảnh báo và trả về
if (condition) {
  statement1;
} else {
  statement2;
}
7

function checkData() {
  if (document.form1.threeChar.value.length === 3) {
    return true;
  } else {
    alert(
      `Enter exactly three characters. ${document.form1.threeChar.value} is not valid.`,
    );
    return false;
  }
}

Câu lệnh

if (condition) {
  statement1;
} else {
  statement2;
}
3 cho phép chương trình đánh giá một biểu thức và cố gắng so khớp giá trị của biểu thức đó với nhãn
const b = new Boolean(false);
if (b) {
  // this condition evaluates to true
}
if (b == true) {
  // this condition evaluates to false
}
4. Nếu tìm thấy một kết quả phù hợp, chương trình sẽ thực hiện câu lệnh liên quan

Một câu lệnh

if (condition) {
  statement1;
} else {
  statement2;
}
3 trông như thế này

switch (expression) {
  case label1:
    statements1;
    break;
  case label2:
    statements2;
    break;
  // …
  default:
    statementsDefault;
}

JavaScript đánh giá câu lệnh chuyển đổi ở trên như sau

  • Trước tiên, chương trình tìm mệnh đề
    const b = new Boolean(false);
    if (b) {
      // this condition evaluates to true
    }
    if (b == true) {
      // this condition evaluates to false
    }
    
    4 có nhãn khớp với giá trị của biểu thức rồi chuyển điều khiển sang mệnh đề đó, thực thi các câu lệnh liên quan
  • Nếu không tìm thấy nhãn phù hợp, chương trình sẽ tìm mệnh đề
    const b = new Boolean(false);
    if (b) {
      // this condition evaluates to true
    }
    if (b == true) {
      // this condition evaluates to false
    }
    
    7 tùy chọn
    • Nếu một mệnh đề
      const b = new Boolean(false);
      if (b) {
        // this condition evaluates to true
      }
      if (b == true) {
        // this condition evaluates to false
      }
      
      7 được tìm thấy, chương trình sẽ chuyển quyền điều khiển sang mệnh đề đó, thực hiện các câu lệnh liên quan
    • Nếu không tìm thấy mệnh đề
      const b = new Boolean(false);
      if (b) {
        // this condition evaluates to true
      }
      if (b == true) {
        // this condition evaluates to false
      }
      
      7, chương trình sẽ tiếp tục thực thi tại câu lệnh sau khi kết thúc
      if (condition) {
        statement1;
      } else {
        statement2;
      }
      
      3
    • (Theo quy ước, mệnh đề
      const b = new Boolean(false);
      if (b) {
        // this condition evaluates to true
      }
      if (b == true) {
        // this condition evaluates to false
      }
      
      7 được viết là mệnh đề cuối cùng, nhưng không nhất thiết phải như vậy. )

tuyên bố phá vỡ

Câu lệnh

function checkData() {
  if (document.form1.threeChar.value.length === 3) {
    return true;
  } else {
    alert(
      `Enter exactly three characters. ${document.form1.threeChar.value} is not valid.`,
    );
    return false;
  }
}
2 tùy chọn được liên kết với mỗi mệnh đề
const b = new Boolean(false);
if (b) {
  // this condition evaluates to true
}
if (b == true) {
  // this condition evaluates to false
}
4 đảm bảo rằng chương trình sẽ thoát ra khỏi
if (condition) {
  statement1;
} else {
  statement2;
}
3 sau khi câu lệnh phù hợp được thực thi, và sau đó tiếp tục thực hiện tại câu lệnh theo sau
if (condition) {
  statement1;
} else {
  statement2;
}
3. Nếu
function checkData() {
  if (document.form1.threeChar.value.length === 3) {
    return true;
  } else {
    alert(
      `Enter exactly three characters. ${document.form1.threeChar.value} is not valid.`,
    );
    return false;
  }
}
2 bị bỏ qua, chương trình sẽ tiếp tục thực hiện bên trong câu lệnh
if (condition) {
  statement1;
} else {
  statement2;
}
3 (và sẽ đánh giá
const b = new Boolean(false);
if (b) {
  // this condition evaluates to true
}
if (b == true) {
  // this condition evaluates to false
}
4 tiếp theo, v.v.)

Ví dụ

Trong ví dụ sau, nếu

function checkData() {
  if (document.form1.threeChar.value.length === 3) {
    return true;
  } else {
    alert(
      `Enter exactly three characters. ${document.form1.threeChar.value} is not valid.`,
    );
    return false;
  }
}
9 ước tính thành
switch (expression) {
  case label1:
    statements1;
    break;
  case label2:
    statements2;
    break;
  // …
  default:
    statementsDefault;
}
0, chương trình khớp giá trị với trường hợp
switch (expression) {
  case label1:
    statements1;
    break;
  case label2:
    statements2;
    break;
  // …
  default:
    statementsDefault;
}
0 và thực thi câu lệnh liên quan. Khi gặp
function checkData() {
  if (document.form1.threeChar.value.length === 3) {
    return true;
  } else {
    alert(
      `Enter exactly three characters. ${document.form1.threeChar.value} is not valid.`,
    );
    return false;
  }
}
2, chương trình thoát khỏi câu lệnh
if (condition) {
  statement1;
} else {
  statement2;
}
3 và tiếp tục thực hiện từ câu lệnh sau
if (condition) {
  statement1;
} else {
  statement2;
}
3. Nếu
function checkData() {
  if (document.form1.threeChar.value.length === 3) {
    return true;
  } else {
    alert(
      `Enter exactly three characters. ${document.form1.threeChar.value} is not valid.`,
    );
    return false;
  }
}
2 bị bỏ qua, câu lệnh cho
switch (expression) {
  case label1:
    statements1;
    break;
  case label2:
    statements2;
    break;
  // …
  default:
    statementsDefault;
}
6 cũng sẽ được thực hiện

while (x < 10) {
  x++;
}
0

Bạn có thể đưa ra các ngoại lệ bằng cách sử dụng câu lệnh

switch (expression) {
  case label1:
    statements1;
    break;
  case label2:
    statements2;
    break;
  // …
  default:
    statementsDefault;
}
7 và xử lý chúng bằng cách sử dụng câu lệnh
switch (expression) {
  case label1:
    statements1;
    break;
  case label2:
    statements2;
    break;
  // …
  default:
    statementsDefault;
}
8

Gần như bất kỳ đối tượng nào cũng có thể được ném vào JavaScript. Tuy nhiên, không phải tất cả các đối tượng bị ném đều được tạo ra như nhau. Mặc dù việc ném số hoặc chuỗi là lỗi phổ biến, nhưng việc sử dụng một trong các loại ngoại lệ được tạo riêng cho mục đích này thường hiệu quả hơn

  • while (x < 10) {
      x++;
    }
    
    01 và
    while (x < 10) {
      x++;
    }
    
    02

Sử dụng câu lệnh

switch (expression) {
  case label1:
    statements1;
    break;
  case label2:
    statements2;
    break;
  // …
  default:
    statementsDefault;
}
7 để đưa ra một ngoại lệ. Câu lệnh
switch (expression) {
  case label1:
    statements1;
    break;
  case label2:
    statements2;
    break;
  // …
  default:
    statementsDefault;
}
7 chỉ định giá trị được ném

while (x < 10) {
  x++;
}
1

Bạn có thể ném bất kỳ biểu thức nào, không chỉ biểu thức của một loại cụ thể. Đoạn mã sau đưa ra một số ngoại lệ thuộc các loại khác nhau

while (x < 10) {
  x++;
}
2

Câu lệnh

switch (expression) {
  case label1:
    statements1;
    break;
  case label2:
    statements2;
    break;
  // …
  default:
    statementsDefault;
}
8 đánh dấu một khối câu lệnh để thử và chỉ định một hoặc nhiều câu trả lời nếu một ngoại lệ được đưa ra. Nếu một ngoại lệ được ném ra, câu lệnh
switch (expression) {
  case label1:
    statements1;
    break;
  case label2:
    statements2;
    break;
  // …
  default:
    statementsDefault;
}
8 sẽ bắt nó

Câu lệnh

switch (expression) {
  case label1:
    statements1;
    break;
  case label2:
    statements2;
    break;
  // …
  default:
    statementsDefault;
}
8 bao gồm một khối
while (x < 10) {
  x++;
}
09, chứa một hoặc nhiều câu lệnh và một khối
while (x < 10) {
  x++;
}
10, chứa các câu lệnh xác định phải làm gì nếu một ngoại lệ được ném vào khối
while (x < 10) {
  x++;
}
09

Nói cách khác, bạn muốn khối

while (x < 10) {
  x++;
}
09 thành công—nhưng nếu không, bạn muốn quyền kiểm soát chuyển sang khối
while (x < 10) {
  x++;
}
10. Nếu bất kỳ câu lệnh nào trong khối
while (x < 10) {
  x++;
}
09 (hoặc trong một hàm được gọi từ bên trong khối
while (x < 10) {
  x++;
}
09) đưa ra một ngoại lệ, quyền điều khiển sẽ ngay lập tức chuyển sang khối
while (x < 10) {
  x++;
}
10. Nếu không có ngoại lệ nào được ném vào khối
while (x < 10) {
  x++;
}
09, thì khối
while (x < 10) {
  x++;
}
10 sẽ bị bỏ qua. Khối
while (x < 10) {
  x++;
}
19 thực thi sau khi khối
while (x < 10) {
  x++;
}
09 và
while (x < 10) {
  x++;
}
10 thực thi nhưng trước các câu lệnh theo sau câu lệnh
switch (expression) {
  case label1:
    statements1;
    break;
  case label2:
    statements2;
    break;
  // …
  default:
    statementsDefault;
}
8

Ví dụ sau sử dụng câu lệnh

switch (expression) {
  case label1:
    statements1;
    break;
  case label2:
    statements2;
    break;
  // …
  default:
    statementsDefault;
}
8. Ví dụ gọi một hàm lấy tên tháng từ một mảng dựa trên giá trị được truyền cho hàm. Nếu giá trị không tương ứng với số tháng (
var x = 1;
{
  var x = 2;
}
console.log(x); // 2
9 –
while (x < 10) {
  x++;
}
25), một ngoại lệ được đưa ra với giá trị
while (x < 10) {
  x++;
}
26 và các câu lệnh trong khối
while (x < 10) {
  x++;
}
10 đặt biến
while (x < 10) {
  x++;
}
28 thành
while (x < 10) {
  x++;
}
29

while (x < 10) {
  x++;
}
3

khối bắt

Bạn có thể sử dụng khối

while (x < 10) {
  x++;
}
10 để xử lý tất cả các ngoại lệ có thể được tạo trong khối
while (x < 10) {
  x++;
}
09

while (x < 10) {
  x++;
}
4

Khối

while (x < 10) {
  x++;
}
10 chỉ định một mã định danh (
while (x < 10) {
  x++;
}
33 trong cú pháp trước) giữ giá trị được chỉ định bởi câu lệnh
switch (expression) {
  case label1:
    statements1;
    break;
  case label2:
    statements2;
    break;
  // …
  default:
    statementsDefault;
}
7. Bạn có thể sử dụng số nhận dạng này để nhận thông tin về ngoại lệ đã được ném

JavaScript tạo mã định danh này khi khối

while (x < 10) {
  x++;
}
10 được nhập. Mã định danh chỉ tồn tại trong khoảng thời gian của khối
while (x < 10) {
  x++;
}
10. Khi khối
while (x < 10) {
  x++;
}
10 kết thúc thực thi, mã định danh không còn tồn tại

Ví dụ: đoạn mã sau đưa ra một ngoại lệ. Khi ngoại lệ xảy ra, quyền điều khiển sẽ chuyển sang khối

while (x < 10) {
  x++;
}
10

while (x < 10) {
  x++;
}
5

Ghi chú. Khi ghi lỗi vào bảng điều khiển bên trong khối

while (x < 10) {
  x++;
}
10, nên sử dụng
while (x < 10) {
  x++;
}
40 thay vì
while (x < 10) {
  x++;
}
41 để gỡ lỗi. Nó định dạng thông báo là một lỗi và thêm nó vào danh sách các thông báo lỗi do trang tạo ra

Khối cuối cùng

Khối

while (x < 10) {
  x++;
}
19 chứa các câu lệnh sẽ được thực thi sau khi khối
while (x < 10) {
  x++;
}
09 và
while (x < 10) {
  x++;
}
10 được thực thi. Ngoài ra, khối
while (x < 10) {
  x++;
}
19 thực thi trước mã theo sau câu lệnh
while (x < 10) {
  x++;
}
46

Cũng cần lưu ý rằng khối

while (x < 10) {
  x++;
}
19 sẽ thực thi cho dù có ném ngoại lệ hay không. Tuy nhiên, nếu một ngoại lệ được ném ra, các câu lệnh trong khối
while (x < 10) {
  x++;
}
19 sẽ thực thi ngay cả khi không có khối
while (x < 10) {
  x++;
}
10 nào xử lý ngoại lệ được ném ra

Bạn có thể sử dụng khối

while (x < 10) {
  x++;
}
19 để làm cho tập lệnh của bạn không thành công khi có ngoại lệ xảy ra. Ví dụ: bạn có thể cần giải phóng tài nguyên mà tập lệnh của bạn đã kết nối

Ví dụ sau mở một tệp và sau đó thực hiện các câu lệnh sử dụng tệp. (JavaScript phía máy chủ cho phép bạn truy cập các tệp. ) Nếu một ngoại lệ được đưa ra trong khi tệp đang mở, khối

while (x < 10) {
  x++;
}
19 sẽ đóng tệp trước khi tập lệnh bị lỗi. Sử dụng
while (x < 10) {
  x++;
}
19 ở đây đảm bảo rằng tệp không bao giờ bị mở, ngay cả khi xảy ra lỗi

while (x < 10) {
  x++;
}
6

Nếu khối

while (x < 10) {
  x++;
}
19 trả về một giá trị, giá trị này sẽ trở thành giá trị trả về của toàn bộ sản phẩm
while (x < 10) {
  x++;
}
46, bất kể bất kỳ câu lệnh
while (x < 10) {
  x++;
}
55 nào trong khối
while (x < 10) {
  x++;
}
09 và
while (x < 10) {
  x++;
}
10

while (x < 10) {
  x++;
}
7

Việc ghi đè các giá trị trả về bằng khối

while (x < 10) {
  x++;
}
19 cũng áp dụng cho các ngoại lệ được ném hoặc ném lại bên trong khối
while (x < 10) {
  x++;
}
10

while (x < 10) {
  x++;
}
8

làm tổ thử. câu lệnh bắt

Bạn có thể lồng một hoặc nhiều câu lệnh

switch (expression) {
  case label1:
    statements1;
    break;
  case label2:
    statements2;
    break;
  // …
  default:
    statementsDefault;
}
8

Nếu một khối

while (x < 10) {
  x++;
}
09 bên trong không có khối
while (x < 10) {
  x++;
}
10 tương ứng

  1. nó phải chứa một khối
    while (x < 10) {
      x++;
    }
    
    19, và
  2. khối
    while (x < 10) {
      x++;
    }
    
    10 của câu lệnh
    switch (expression) {
      case label1:
        statements1;
        break;
      case label2:
        statements2;
        break;
      // …
      default:
        statementsDefault;
    }
    
    8 kèm theo được kiểm tra để khớp

Để biết thêm thông tin, xem trên trang tham khảo

switch (expression) {
  case label1:
    statements1;
    break;
  case label2:
    statements2;
    break;
  // …
  default:
    statementsDefault;
}
8

Tùy thuộc vào loại lỗi, bạn có thể sử dụng các thuộc tính

while (x < 10) {
  x++;
}
67 và
while (x < 10) {
  x++;
}
68 để nhận được thông báo tinh tế hơn

Thuộc tính

while (x < 10) {
  x++;
}
67 cung cấp loại chung của
while (x < 10) {
  x++;
}
70 (chẳng hạn như
while (x < 10) {
  x++;
}
01 hoặc
while (x < 10) {
  x++;
}
70), trong khi đó,
while (x < 10) {
  x++;
}
68 thường cung cấp một thông báo ngắn gọn hơn thông báo sẽ nhận được bằng cách chuyển đổi đối tượng lỗi thành một chuỗi

Nếu bạn đang đưa ra các ngoại lệ của riêng mình, để tận dụng lợi thế của các thuộc tính này (chẳng hạn như nếu khối

while (x < 10) {
  x++;
}
10 của bạn không phân biệt giữa ngoại lệ của riêng bạn và ngoại lệ của hệ thống), bạn có thể sử dụng hàm tạo
while (x < 10) {
  x++;
}
70

Sử dụng try catch trong JavaScript có tốt không?

Một trong những lợi ích của thử/bắt là khả năng hiển thị lỗi do bạn tạo tùy chỉnh . Điều này được gọi là (lỗi ném). Trong những tình huống mà bạn không muốn thứ xấu xí này mà JavaScript hiển thị, bạn có thể loại bỏ lỗi của mình (một ngoại lệ) bằng cách sử dụng câu lệnh ném.

Việc sử dụng thử nắm bắt có tốt không?

Không lạm dụng tính năng “Bắt thử” . Đôi khi chúng tôi làm điều đó để giữ cho mã trông nhất quán giữa các tệp và phương thức khác nhau. Nhưng, thật không may, những điều này sẽ gây ra những tác động bất lợi cho cả hiệu suất của ứng dụng và khả năng phát hiện lỗi.

Là thử bắt không hiệu quả?

thử bắt các khối có tác động không đáng kể đến hiệu suất nhưng Ném ngoại lệ có thể khá lớn, đây có thể là lúc đồng nghiệp của bạn nhầm lẫn. Lưu câu trả lời này.

Có thực hành xấu để bắt thử bắt lồng nhau không?

Mặc dù điều này đôi khi không khả dụng, nhưng các khối try/catch lồng nhau ảnh hưởng nghiêm trọng đến khả năng đọc mã nguồn vì nó gây khó khăn cho việc hiểu khối nào sẽ bắt ngoại lệ nào.