Hãy tưởng tượng điều này. bạn đã thiết lập lệnh gọi API và đang hoạt động. Dữ liệu trở lại với những gì bạn mong đợi. Hiện nay? . Đột nhiên, bạn thấy một lỗi trong bảng điều khiển của mình
Chuyện gì đã xảy ra và tại sao bạn thấy lỗi
Code language: JavaScript [javascript]7 này?
Nguyên nhân gây ra lỗi của bạn thực sự khá đơn giản. phương pháp
Code language: JavaScript [javascript]8 chỉ áp dụng khi làm việc với mảng. Cụ thể hơn, phương thức tồn tại trên nguyên mẫu
Code language: JavaScript [javascript]9 là
Code language: JavaScript [javascript]0
Phương pháp này ban đầu được giới thiệu vào năm 2009 với ES5 và rất hữu ích trong nhiều tình huống.
Code language: JavaScript [javascript]1 lấy chức năng gọi lại làm tham số duy nhất của nó. Cuộc gọi lại đó được đưa ra hai tham số. mục hiện tại và chỉ mục của nó trong mảng. Bản thân phương thức này hoạt động tương tự như gọi
Code language: JavaScript [javascript]0 ngoại trừ các giá trị trả về của hàm gọi lại được đặt cùng nhau thành một mảng mới được trả về bởi chính phương thức đó
Tạo một mảng mới từ một mảng đã cho là một cách để duy trì tính bất biến trong mã JavaScript của bạn. Điều quan trọng cần lưu ý là nếu bạn đang sử dụng
Code language: JavaScript [javascript]1 trên một mảng đối tượng và thay đổi một thuộc tính trên một đối tượng nhất định, đối tượng đó hiện đã bị thay đổi. Để tránh điều này, trước tiên bạn có thể tạo một bản sao của đối tượng và sau đó sửa đổi bản sao
Ví dụ: nếu bạn có một mảng số và muốn tạo một mảng mới trong đó mỗi số trong mảng ban đầu được nhân đôi, bạn chỉ cần làm điều này
Code language: JavaScript [javascript]
Để giải quyết lỗi
Code language: JavaScript [javascript]7, trước tiên hãy tìm ra hình dạng của dữ liệu bạn đang làm việc và sau đó tạo một mảng từ dữ liệu đó tùy thuộc vào dữ liệu đó là gì. Ví dụ: có thể dữ liệu của bạn là một đối tượng đơn giản nhưng mảng bạn đang tìm kiếm thực sự nằm trong đối tượng đó. Trong trường hợp đó, chỉ cần sử dụng ký hiệu dấu chấm để truy cập thuộc tính mong muốn
Code language: JavaScript [javascript]
Cũng có thể dữ liệu của bạn là một đối tượng đơn giản nhưng dữ liệu bạn muốn lặp lại được lưu trữ trong mỗi khóa của đối tượng. Trong trường hợp đó, bạn có thể lặp qua các khóa đó và thực hiện logic của mình trên giá trị tương ứng của từng khóa
Code language: JavaScript [javascript]
Một giải pháp phổ biến khác là cần thiết khi bạn đang làm việc với JavaScript
Code language: JavaScript [javascript]3 hoặc
Code language: JavaScript [javascript]4. Bởi vì cả hai đều có thể lặp lại và thậm chí có phương thức
Code language: JavaScript [javascript]5, bạn có thể giả định một cách hợp lý rằng
Code language: JavaScript [javascript]8 cũng sẽ hoạt động. Tuy nhiên, vì chúng không phải là mảng kỹ thuật, nên bạn sẽ cần một giải pháp thay thế. Giải pháp tương tự cho cả
Code language: JavaScript [javascript]3 hoặc
Code language: JavaScript [javascript]4 và chúng tôi thậm chí còn có một bài viết giải thích cách làm việc với các giá trị của chúng một cách chi tiết hơn mà bạn có thể xem tại đây
Code language: JavaScript [javascript]
Nếu bạn muốn tránh lỗi trong tương lai, đặc biệt là nếu bạn không biết chính xác hình dạng của dữ liệu mà bạn sẽ cố gắng gọi
Code language: JavaScript [javascript]1 trên đó, thì đây là một hàm đơn giản để ánh xạ an toàn các giá trị của mảng
Code language: JavaScript [javascript]
Hy vọng rằng một trong những giải pháp này sẽ giải quyết được trường hợp cụ thể của bạn nhưng nếu không, vui lòng để lại nhận xét và chúng tôi rất sẵn lòng trợ giúp
Ngoại lệ JavaScript "không phải là một hàm" xảy ra khi có nỗ lực gọi một giá trị từ một hàm, nhưng giá trị đó không thực sự là một hàm
Thông điệp
Code language: JavaScript [javascript]1
loại lỗi
Code language: JavaScript [javascript]21
Có chuyện gì?
Nó đã cố gọi một giá trị từ một hàm, nhưng giá trị đó không thực sự là một hàm. Một số đoạn mã mong bạn cung cấp một chức năng, nhưng điều đó đã không xảy ra
Có lẽ có một lỗi đánh máy trong tên chức năng?
Có nhiều chức năng tích hợp cần chức năng [gọi lại]. Bạn sẽ phải cung cấp một hàm để các phương thức này hoạt động bình thường
- Khi làm việc với các đối tượng
Code language: JavaScript [javascript]
24 hoặcCode language: JavaScript [javascript]
26Code language: JavaScript [javascript]
27,Code language: JavaScript [javascript]
28,Code language: JavaScript [javascript]
29,Code language: JavaScript [javascript]
10,Code language: JavaScript [javascript]
11,Code language: JavaScript [javascript]
12,Code language: JavaScript [javascript]
13,Code language: JavaScript [javascript]
14
- Khi làm việc với các đối tượng
Code language: JavaScript [javascript]
15 vàCode language: JavaScript [javascript]
16Code language: JavaScript [javascript]
17 vàCode language: JavaScript [javascript]
18
ví dụ
Một lỗi đánh máy trong tên chức năng
Trong trường hợp này, điều xảy ra quá thường xuyên, có một lỗi đánh máy trong tên phương thức
Code language: JavaScript [javascript]2
Tên hàm chính xác là
Code language: JavaScript [javascript]19
Code language: JavaScript [javascript]1
Chức năng được gọi trên đối tượng sai
Đối với một số phương pháp nhất định, bạn phải cung cấp chức năng [gọi lại] và chức năng này sẽ chỉ hoạt động trên các đối tượng cụ thể. Trong ví dụ này,
Code language: JavaScript [javascript]10 được sử dụng, sẽ chỉ hoạt động với các đối tượng
Code language: JavaScript [javascript]24
Code language: JavaScript [javascript]5
Sử dụng một mảng thay thế
Code language: JavaScript [javascript]6
Hàm chia sẻ tên với thuộc tính có sẵn
Đôi khi khi tạo một lớp, bạn có thể có một thuộc tính và một hàm trùng tên. Khi gọi hàm, trình biên dịch nghĩ rằng hàm không còn tồn tại