Thiếu dấu ngoặc là một lỗi trong javascript

Tất nhiên, mã sẽ không chạy, nhưng chúng tôi có thể điền vào chỗ trống và yên tâm hơn rằng cú pháp và cấu trúc của chúng tôi là chính xác hoặc gần như vậy. Tôi thích gọi nó là giàn giáo hoặc ngăn chặn khi cả hai thuật ngữ này đồng nghĩa với nhau về mặt này. Chúng tôi bắt đầu với một bản phác thảo, sau đó bắt đầu tô bóng

Vì vậy, tôi đang ở phần cuối cùng trong phần đầu tiên của JavaScript và tôi liên tục gặp phải lỗi này

“Rất tiếc, hãy thử lại. Kiểm tra xem dấu ngoặc nhọn của bạn có đúng không. Cái ở dòng 2 có thể thiếu dấu ngoặc nhọn. ”

vì vậy tôi đã thử di chuyển các dấu ngoặc và điều chỉnh chúng. Đây là Mã của tôi

// Not sure where to begin? Check the Hint! 

if [ 9 * 2 === 18 ] { do 2+2 } other { do console. log[“Không có gì”; }

Thiếu ngoại lệ JavaScript này } sau thân hàm xảy ra nếu có bất kỳ lỗi cú pháp nào trong khi tạo một hàm ở đâu đó trong mã. Đóng dấu ngoặc nhọn/dấu ngoặc đơn phải sai thứ tự

Thông điệp

SyntaxError: Expected '}' [Edge]
SyntaxError: missing } after function body [Firefox]

Loại lỗi

SyntaxError

Nguyên nhân lỗi. Ở đâu đó trong mã, có lỗi khi viết cú pháp cho một hàm trong tập lệnh

Ngoại lệ JavaScript "thiếu } sau thân hàm" xảy ra khi có lỗi cú pháp khi tạo một hàm ở đâu đó. Kiểm tra xem có bất kỳ dấu ngoặc nhọn hoặc dấu ngoặc đơn nào theo đúng thứ tự không

Thông điệp

SyntaxError: Expected '}' [Edge]
SyntaxError: missing } after function body [Firefox]

loại lỗi

var charge = function[] {
  if [sunny] {
    useSolarCells[];
  } else {
    promptBikeRide[];
};
6

Có chuyện gì?

Có một lỗi cú pháp khi tạo một chức năng ở đâu đó. Đồng thời kiểm tra xem có bất kỳ dấu ngoặc nhọn hoặc dấu ngoặc đơn nào theo đúng thứ tự không. Thụt lề hoặc định dạng mã đẹp hơn một chút cũng có thể giúp bạn nhìn xuyên rừng

ví dụ

Quên đóng dấu ngoặc nhọn

Thông thường, thiếu một dấu ngoặc nhọn trong mã chức năng của bạn

var charge = function[] {
  if [sunny] {
    useSolarCells[];
  } else {
    promptBikeRide[];
};

đúng sẽ là

var charge = function[] {
  if [sunny] {
    useSolarCells[];
  } else {
    promptBikeRide[];
  }
};

Nó có thể khó hiểu hơn khi sử dụng IIFE, Đóng cửa hoặc các cấu trúc khác sử dụng nhiều dấu ngoặc đơn và dấu ngoặc nhọn khác nhau, chẳng hạn

const list = [1, 2,

const instruments = [
  'Ukulele',
  'Guitar',
  'Piano'
};

const data = [{ foo: 'bar' } { bar: 'foo' }];

đúng sẽ là

const list = [1, 2];

const instruments = [
 'Ukulele',
 'Guitar',
 'Piano'
];

const data = [{ foo: 'bar' }, { bar: 'foo' }];

Tiếp theo trong cuộc phiêu lưu của chúng ta qua loạt bài Xử lý lỗi JavaScript, chúng ta sẽ xem xét lỗi JavaScript

var charge = function[] {
  if [sunny] {
    useSolarCells[];
  } else {
    promptBikeRide[];
};
7. Như chính cái tên đã ngụ ý trực tiếp, lỗi
var charge = function[] {
  if [sunny] {
    useSolarCells[];
  } else {
    promptBikeRide[];
};
7 được đưa ra khi một mảng được khởi tạo với cú pháp không chính xác, chẳng hạn như thiếu dấu ngoặc đóng [
var charge = function[] {
  if [sunny] {
    useSolarCells[];
  } else {
    promptBikeRide[];
};
9] hoặc dấu phẩy [
var charge = function[] {
  if [sunny] {
    useSolarCells[];
  } else {
    promptBikeRide[];
  }
};
0]

Trong bài viết này, chúng ta sẽ khám phá lỗi

var charge = function[] {
  if [sunny] {
    useSolarCells[];
  } else {
    promptBikeRide[];
};
7 chi tiết hơn, bao gồm vị trí của nó trong hệ thống phân cấp
["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
1 của JavaScript, cùng với một số ví dụ về nguyên nhân có thể gây ra lỗi
var charge = function[] {
  if [sunny] {
    useSolarCells[];
  } else {
    promptBikeRide[];
};
7 trong mã của bạn. Chúng ta hãy crackin'

Tóm tắt kỹ thuật

  • Tất cả các đối tượng lỗi JavaScript đều là hậu duệ của đối tượng
    ["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
    ["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
    ["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
    3 hoặc một đối tượng được kế thừa trong đó
  • Đối tượng
    ["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
    ["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
    ["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
    4 được kế thừa từ đối tượng
    ["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
    ["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
    ["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
    3
  • Lỗi
    var charge = function[] {
      if [sunny] {
        useSolarCells[];
      } else {
        promptBikeRide[];
    };
    
    7 là một loại đối tượng cụ thể của
    ["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
    ["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
    ["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
    4

Khi nào bạn nên sử dụng nó?

Để hiểu điều gì có thể gây ra lỗi

var charge = function[] {
  if [sunny] {
    useSolarCells[];
  } else {
    promptBikeRide[];
};
7, trước tiên chúng ta cần hiểu cách các đối tượng
["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
9 trong JavaScript hoạt động. Cụ thể, chúng ta cần biết cách
SyntaxError: Expected '}' [Edge]
SyntaxError: missing } after function body [Firefox]
40 được định dạng đúng, về mặt cú pháp, để sau đó chúng ta có thể thấy cú pháp không đúng sẽ dẫn đến lỗi
var charge = function[] {
  if [sunny] {
    useSolarCells[];
  } else {
    promptBikeRide[];
};
7 như thế nào

JavaScript

SyntaxError: Expected '}' [Edge]
SyntaxError: missing } after function body [Firefox]
40 là danh sách dữ liệu đơn giản và có thể được khởi tạo theo một số cách khác nhau. Ở đây chúng tôi sử dụng ba phương pháp hơi khác nhau để tạo ra cùng một giá trị 5 giá trị
["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
9

SyntaxError: Expected '}' [Edge]
SyntaxError: missing } after function body [Firefox]
7

Như mong đợi, đầu ra là ba

SyntaxError: Expected '}' [Edge]
SyntaxError: missing } after function body [Firefox]
40 khác nhau nhưng giống hệt nhau với cùng các giá trị

________số 8

Cho đến nay, phương pháp nội tuyến để tạo một

["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
9 mới bằng cách sử dụng các dấu ngoặc xung quanh [
SyntaxError: Expected '}' [Edge]
SyntaxError: missing } after function body [Firefox]
46] là phương pháp phổ biến nhất và do đó, đó là nguồn gốc của tên lỗi
var charge = function[] {
  if [sunny] {
    useSolarCells[];
  } else {
    promptBikeRide[];
};
7 của chúng tôi

Hãy lấy ví dụ ban đầu tương tự ở trên và xem điều gì sẽ xảy ra nếu chúng ta bỏ qua dấu ngoặc đóng cuối cùng [

var charge = function[] {
  if [sunny] {
    useSolarCells[];
  } else {
    promptBikeRide[];
};
9]

SyntaxError: Expected '}' [Edge]
SyntaxError: missing } after function body [Firefox]
4

Khi nó xảy ra, lỗi kết quả hơi khác nhau tùy thuộc vào công cụ trình duyệt

SyntaxError
3

Sự khác biệt này trong cách công cụ JavaScript của trình duyệt phân tích cú pháp và do đó báo cáo lỗi

var charge = function[] {
  if [sunny] {
    useSolarCells[];
  } else {
    promptBikeRide[];
};
7 khá thú vị

Chrome nhận thấy rằng

SyntaxError
30
["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
9 đang được khởi tạo và xác định, đồng thời Chrome sẽ kết thúc
SyntaxError
32 và mong đợi một trong số ít các ký tự có thể có

  • Dấu phẩy [
    var charge = function[] {
      if [sunny] {
        useSolarCells[];
      } else {
        promptBikeRide[];
      }
    };
    0] để chỉ ra một mục khác trong
    ["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
    ["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
    ["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
    9
  • Dấu ngoặc đóng [
    var charge = function[] {
      if [sunny] {
        useSolarCells[];
      } else {
        promptBikeRide[];
    };
    
    9] để cho biết quá trình khởi tạo
    ["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
    ["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
    ["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
    9 đã hoàn tất
  • Hoặc, một loại
    SyntaxError
    
    37 nào đó để chỉ ra rằng các giá trị bổ sung [ngoài chuỗi
    SyntaxError
    
    32 đầu tiên của chúng tôi] nên được coi là một phần của giá trị mục
    ["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
    ["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
    ["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
    9 cụ thể này, chẳng hạn như dấu cộng [
    SyntaxError: Expected '}' [Edge]
    SyntaxError: missing } after function body [Firefox]
    
    20] để nối nó với một giá trị khác [
    SyntaxError: Expected '}' [Edge]
    SyntaxError: missing } after function body [Firefox]
    
    21]

Trong trường hợp cụ thể này, Chrome thấy rằng ký tự tiếp theo là dấu chấm phẩy [

SyntaxError: Expected '}' [Edge]
SyntaxError: missing } after function body [Firefox]
22], đây không phải là cách hợp lệ để hoàn tất quá trình khởi tạo của
["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
9 này và do đó Chrome đưa ra lỗi cho biết như vậy

Trong khi đó, công cụ JavaScript của Firefox kém tinh tế hơn. Mặc dù trình phân tích cú pháp cơ bản nhận ra rằng bất kỳ loại ký tự nào ở trên đều hoàn toàn hợp lệ để tuân theo giá trị

SyntaxError
32 của chúng tôi, Firefox cho chúng tôi biết rõ ràng rằng dấu ngoặc đóng [
var charge = function[] {
  if [sunny] {
    useSolarCells[];
  } else {
    promptBikeRide[];
};
9] là thứ bị thiếu. Mặc dù lỗi
var charge = function[] {
  if [sunny] {
    useSolarCells[];
  } else {
    promptBikeRide[];
};
7 cụ thể mà Firefox báo cáo cho chúng tôi biết rằng có vấn đề về cú pháp khi xác định
["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
9 của chúng tôi, nhưng nó không chính xác về mặt kỹ thuật vì một ký tự khác, bên cạnh dấu ngoặc đóng [
var charge = function[] {
  if [sunny] {
    useSolarCells[];
  } else {
    promptBikeRide[];
};
9], có thể xuất hiện ở đó và hoàn toàn hợp lệ. Về lâu dài, điều đó không quan trọng lắm, nhưng những khác biệt này hơi thú vị

Một nguyên nhân tiềm ẩn khác gây ra lỗi

var charge = function[] {
  if [sunny] {
    useSolarCells[];
  } else {
    promptBikeRide[];
};
7 khi tạo một
["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
9 mới là khi chúng tôi thiếu dấu phân cách bằng dấu phẩy giữa nhiều giá trị

SyntaxError: Expected '}' [Edge]
SyntaxError: missing } after function body [Firefox]
2

Cũng giống như trước đây, có sự khác biệt rõ rệt giữa các trình duyệt khác nhau khi báo cáo lỗi

var charge = function[] {
  if [sunny] {
    useSolarCells[];
  } else {
    promptBikeRide[];
};
7

var charge = function[] {
  if [sunny] {
    useSolarCells[];
  } else {
    promptBikeRide[];
};
0

Một lần nữa, Chrome nhận ra sự phức tạp của cú pháp hơn một chút, nhận thấy rằng có hai chuỗi trong "phần tử" đại diện cho một giá trị duy nhất của

["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
9 của chúng tôi, nhưng không có
SyntaxError
37 để chỉ ra hành động cần thực hiện đối với cả hai giá trị chuỗi [ . Do đó, Chrome báo cáo rằng chuỗi thứ hai của
var charge = function[] {
  if [sunny] {
    useSolarCells[];
  } else {
    promptBikeRide[];
};
04 là
var charge = function[] {
  if [sunny] {
    useSolarCells[];
  } else {
    promptBikeRide[];
};
05

Trong khi đó, Firefox một lần nữa lại đưa ra lỗi

var charge = function[] {
  if [sunny] {
    useSolarCells[];
  } else {
    promptBikeRide[];
};
7, mặc dù có một dấu ngoặc đóng [
var charge = function[] {
  if [sunny] {
    useSolarCells[];
  } else {
    promptBikeRide[];
};
9] ở cuối định nghĩa
["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
["Alice", "Bob", "Chris", "Danielle", "Elizabeth"]
9 của chúng tôi

Để tìm hiểu sâu hơn về cách các ứng dụng của bạn xử lý Lỗi JavaScript, hãy xem công cụ theo dõi lỗi JavaScript Airbrake mang tính cách mạng để có các cảnh báo theo thời gian thực và thông tin chi tiết tức thời về lỗi xảy ra với mã JavaScript của bạn

Bạn có thể sử dụng dấu ngoặc trong JavaScript không?

Để chỉnh sửa mã JavaScript, bạn có thể sử dụng các kỹ thuật tương tự mà bạn sử dụng để chỉnh sửa HTML hoặc CSS. Tuy nhiên, một tệp JavaScript phải có. tiện ích mở rộng js. Theo mặc định, khi bạn nhập dấu ngoặc nhọn trái, dấu ngoặc đơn trái hoặc dấu ngoặc kép trái trong câu lệnh JavaScript, Dấu ngoặc sẽ thêm dấu ngoặc nhọn, dấu ngoặc đơn hoặc dấu ngoặc kép phải.

Loại dấu ngoặc nào được sử dụng trong điều kiện trong JavaScript?

Dấu ngoặc nhọn curly brackets được sử dụng để xác định phần đầu và phần cuối của hàm, chúng cũng phân tách mã thành các khối trong hàm. Dấu ngoặc nhọn giúp JavaScript hiểu cấu trúc của tập lệnh của chúng tôi và những gì chúng tôi muốn nó thực hiện. cảnh báo ["Xin chào thế giới. "]

Niềng răng trong JavaScript là gì?

Niềng răng { } được sử dụng như thế nào. Dấu ngoặc nhọn { } là cú pháp đặc biệt trong JSX. Nó được sử dụng để đánh giá một biểu thức JavaScript trong quá trình biên dịch . Một biểu thức JavaScript có thể là một biến, hàm, đối tượng hoặc bất kỳ mã nào phân giải thành giá trị.

Chủ Đề