Các lỗi phổ biến trong JavaScript là gì?
JavaScript là ngôn ngữ kịch bản được sử dụng trong các trang web để thêm chức năng và tính tương tác. Đối với người mới bắt đầu đến từ một ngôn ngữ lập trình khác, JavaScript khá dễ hiểu. Với một vài hướng dẫn, bạn sẽ có thể bắt đầu với nó ngay lập tức Show
Tuy nhiên, có một vài lỗi phổ biến mà nhiều lập trình viên mới bắt đầu mắc phải. Trong bài viết này, chúng tôi sẽ giải quyết 9 lỗi phổ biến (hoặc các lỗi thực hành không tốt) và các giải pháp của chúng để giúp bạn trở thành một nhà phát triển JS giỏi hơn Nhầm lẫn các toán tử gán (=) và đẳng thức (==, ===)Giống như tên gọi của nó, toán tử gán (=) được sử dụng để gán giá trị cho các biến. Các nhà phát triển thường nhầm lẫn nó với toán tử đẳng thức Đây là một ví dụ
Biến tên và chuỗi ‘nodejs' không được so sánh trong trường hợp này. Thay vào đó, 'nodejs' được gán cho tên và 'nodejs' được in ra bảng điều khiển Trong JavaScript, dấu bằng kép (==) và dấu bằng ba (===) được gọi là toán tử so sánh Đối với đoạn mã trên, đây là cách thích hợp để so sánh các giá trị
Sự khác biệt giữa các toán tử so sánh này là dấu bằng kép thực hiện phép so sánh lỏng lẻo trong khi dấu bằng ba thực hiện phép so sánh nghiêm ngặt Trong một so sánh lỏng lẻo, chỉ các giá trị được so sánh. Nhưng trong một so sánh nghiêm ngặt, các giá trị và kiểu dữ liệu được so sánh Đoạn mã sau giải thích nó tốt hơn
Biến số được gán giá trị chuỗi là 1. Khi được so sánh với 1 (của loại số) bằng cách sử dụng giá trị kép, nó sẽ trả về giá trị đúng vì cả hai giá trị đều là 1 Nhưng khi so sánh bằng ba giá trị, nó trả về false vì mỗi giá trị có một kiểu dữ liệu khác nhau Mong đợi các cuộc gọi lại được đồng bộGọi lại là một cách mà JavaScript xử lý các hoạt động không đồng bộ. Tuy nhiên, các lời hứa và không đồng bộ/chờ đợi là các phương pháp thích hợp hơn để xử lý các hoạt động không đồng bộ vì nhiều lệnh gọi lại dẫn đến địa ngục gọi lại Gọi lại không đồng bộ. Chúng được sử dụng như một chức năng được gọi sau một hoạt động khi quá trình thực thi bị trì hoãn hoàn tất Một ví dụ là hàm 3 toàn cầu nhận hàm gọi lại làm đối số đầu tiên và thời lượng (tính bằng ms) làm đối số thứ hai như vậy
Sau 300 mili giây, chức năng gọi lại được gọi. Nhưng trước khi hoàn thành, phần còn lại của mã sẽ chạy. Đây là lý do tại sao giao diện điều khiển cuối cùng. nhật ký được chạy đầu tiên. . Một lỗi phổ biến mà các nhà phát triển mắc phải là hiểu sai các cuộc gọi lại là đồng bộ. Ví dụ: một cuộc gọi lại trả về một giá trị sẽ được sử dụng cho các hoạt động khác Đây là sai lầm đó
4 là đầu ra vì 5 không xác định. Tại thời điểm chạy 6, 7 vẫn chưa được xác định vì hàm 8 sẽ thực hiện gọi lại sau 9Cách tốt nhất để tiếp cận điều này là thực thi phần còn lại của mã trong hàm gọi lại 2Tham chiếu sai đến function callback() { console.log("I am the first"); } setTimeout(callback, 300); console.log("I am the last"); // output // I am the last // I am the first0 0 là một khái niệm thường bị hiểu lầm trong JavaScript. Để sử dụng 2 trong JavaScript, bạn thực sự cần hiểu cách thức hoạt động của nó vì nó hoạt động hơi khác so với các ngôn ngữ khácĐây là một ví dụ về một lỗi phổ biến khi sử dụng 0 7Kết quả đầu tiên là 4 vì 5 trỏ chính xác đến thuộc tính name của đối tượng. Kết quả thứ hai là 6 vì 0 đã mất tham chiếu đến các thuộc tính của đối tượng (bao gồm cả tên)Điều này là do 0 phụ thuộc vào đối tượng gọi hàm chứa nó. Có một biến 2 trong mọi hàm nhưng đối tượng mà nó trỏ tới được xác định bởi đối tượng gọi nó 0 trong 1 trỏ trực tiếp đến 2. 2 trong 4 trỏ trực tiếp đến 5. Nhưng 0 trong hàm gọi lại của 3 không trỏ đến bất kỳ đối tượng nào vì không có đối tượng nào gọi nóĐối với một đối tượng được gọi là 3, một cái gì đó như 9 sẽ được thực thi. Vì không có đối tượng nào gọi hàm đó nên đối tượng mặc định (là 20) được sử dụng_ 21 không tồn tại trên cửa sổ, kết quả là 22Cách tốt nhất để giữ lại tham chiếu đến 2 trong 8 là sử dụng ________ 125, ________ 126, ________ 127 hoặc các hàm mũi tên (được giới thiệu trong ES6). Không giống như các chức năng thông thường, các chức năng mũi tên không tạo 2 của riêng mìnhVì vậy, phần sau đây sẽ giữ nguyên tham chiếu đến 0. . 4Bỏ qua tính biến đổi của đối tượngKhông giống như các kiểu dữ liệu nguyên thủy như chuỗi, số, v.v., trong JavaScript các đối tượng là kiểu dữ liệu tham chiếu. Ví dụ: trong các đối tượng khóa-giá trị 5 70 và 71 sở hữu cùng một tham chiếu đến vị trí trong bộ nhớ nơi đối tượng được lưu trữTrong mảng 8Một lỗi phổ biến mà các nhà phát triển mắc phải là họ coi thường bản chất này của JavaScript và điều này dẫn đến các lỗi không mong muốn. Chẳng hạn, nếu 5 đối tượng có cùng tham chiếu đến cùng một đối tượng, một trong các đối tượng có thể can thiệp vào các thuộc tính trong cơ sở mã quy mô lớn Khi điều này xảy ra, mọi nỗ lực truy cập các thuộc tính ban đầu sẽ trả về không xác định hoặc có thể gây ra lỗi Cách thực hành tốt nhất cho việc này là luôn tạo các tham chiếu mới cho các đối tượng mới khi bạn muốn sao chép một đối tượng. Để làm được điều này, toán tử nghỉ ( 72 được giới thiệu trong ES6) là một giải pháp hoàn hảoVí dụ: trong các đối tượng khóa-giá trị 0trong mảng 1Lưu mảng và đối tượng vào bộ lưu trữ của trình duyệtĐôi khi, khi làm việc với JavaScript, các nhà phát triển có thể muốn tận dụng lợi thế của 73 để lưu các giá trị. Nhưng một lỗi phổ biến là cố lưu các mảng và đối tượng như vốn có trong 73. 73 chỉ chấp nhận chuỗiTrong nỗ lực lưu các đối tượng, JavaScript chuyển đổi đối tượng thành một chuỗi. Kết quả là 76 đối với các đối tượng và một chuỗi được phân tách bằng dấu phẩy đối với các phần tử mảngVí dụ 2Khi các đối tượng được lưu như thế này, việc truy cập chúng trở nên khó khăn. Đối với ví dụ đối tượng, việc truy cập đối tượng như 77 sẽ dẫn đến lỗi. Điều này là do hiện tại 76 là một chuỗi, không có thuộc tính 79Cách tốt hơn để lưu các đối tượng và mảng trong bộ nhớ cục bộ là sử dụng 40 (để chuyển đổi đối tượng thành chuỗi) và 41 (để chuyển đổi chuỗi thành đối tượng). Bằng cách này, việc truy cập các đối tượng trở nên dễ dàngPhiên bản chính xác của đoạn mã trên sẽ là 3Không sử dụng giá trị mặc địnhĐặt giá trị mặc định trong các biến động là một phương pháp rất tốt để ngăn ngừa các lỗi không mong muốn. Đây là một ví dụ về một sai lầm phổ biến. . 4Kết quả là 42 vì 43 là 22 và 45 là 46. Bằng cách sử dụng các giá trị mặc định, các lỗi như thế này có thể được ngăn chặn. Ví dụ 5Ngoài ra, tính năng giá trị mặc định được giới thiệu trong ES6 có thể được sử dụng như vậy 6Ví dụ này, mặc dù tối thiểu, nhấn mạnh tầm quan trọng của các giá trị mặc định. Ngoài ra, nhà phát triển có thể cung cấp lỗi hoặc thông báo cảnh báo khi giá trị dự kiến không được cung cấp Đặt tên biến không đúngVâng, các nhà phát triển vẫn mắc lỗi này. Đặt tên rất khó, nhưng các nhà phát triển thực sự không có lựa chọn nào khác. Nhận xét là cách thực hành tốt trong lập trình và đặt tên biến cũng vậy Ví dụ 7Biến 47 thì không sao, nhưng còn 48 hoặc 49 thì sao? 8Việc đặt tên biến đúng cách rất quan trọng vì nhà phát triển có thể không bao giờ là nhà phát triển duy nhất trên cơ sở mã tại một thời điểm cụ thể hoặc trong tương lai Đặt tên biến đúng cách sẽ cho phép những người đóng góp dễ dàng hiểu cách thức hoạt động của một dự án Kiểm tra các giá trị boolean 9Thực tế phổ biến là kiểm tra các giá trị boolean như đã thấy trong đoạn mã trên. Mặc dù điều này không sao, nhưng đã xảy ra lỗi khi kiểm tra một số giá trị Trong JavaScript, một phép so sánh lỏng lẻo giữa 50 và 51 trả về 52 và 53 và 54 trả về 52. Điều này có nghĩa là nếu 56 là 53, thì 56 sẽ là 52Đây cũng là lỗi thường mắc phải ở các đối tượng. Ví dụ 0Mặc dù thuộc tính 80 tồn tại, nhưng 81 trả về 50, là giá trị 83, do đó, khối 84 được thực thiVì vậy, trừ khi bạn chắc chắn về phạm vi giá trị sẽ được sử dụng, các giá trị và thuộc tính boolean trong các đối tượng sẽ được kiểm tra như thế này 1Nhầm lẫn bổ sung và nốiDấu cộng 85 có hai chức năng trong JavaScript. cộng và nối. Phép cộng dành cho số và Phép nối dành cho chuỗi. Một số nhà phát triển thường sử dụng sai toán tử nàyVí dụ 2Khi thêm chuỗi và số, JavaScript sẽ chuyển đổi số thành chuỗi và nối tất cả các giá trị. Để cộng các số, một phép toán được thực hiện. . Phần kết luậnTất nhiên, có nhiều lỗi (một số nhỏ, một số nghiêm trọng) hơn những lỗi được liệt kê ở trên. Vì vậy, chỉ cần đảm bảo rằng bạn luôn cập nhật những phát triển trong ngôn ngữ Nghiên cứu và tránh những sai lầm này sẽ giúp bạn xây dựng các công cụ và ứng dụng web tốt hơn và đáng tin cậy hơn QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO [ Kỹ sư phần mềm full-stack. Nhà phát triển phụ trợ. Pythonista ] Tôi thích viết mã bằng python. Trong thời gian rảnh của tôi, tôi đọc sách. Tôi thích học hỏi và trải nghiệm những kỹ năng mới Nếu bạn đọc đến đây, hãy tweet cho tác giả để cho họ thấy bạn quan tâm. Tweet một lời cảm ơn Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu Các loại lỗi khác nhau được hiển thị trong JavaScript là gì?7 loại lỗi gốc trong JavaScript bạn nên biết. Hiểu các loại lỗi gốc phổ biến trong JavaScript. . phạm vi lỗi. Điều này được đưa ra khi một số nằm ngoài phạm vi giá trị cho phép. . Tham khảoLỗi. . Lỗi cú pháp. . LoạiLỗi. . Lỗi URI. . Đánh giáLỗi. . Lỗi bên trong Bốn lỗi lập trình phổ biến mà bạn có thể mắc phải khi viết mã JavaScript là gì?15 Lỗi JavaScript phổ biến dành cho người mới bắt đầu . Không trở về từ một chức năng. . Đang tải tập lệnh JavaScript trong HTML trước khi DOM được tải. . Gán lại các biến Const. . Hiểu sai phạm vi biến. . Các biến được đặt tên kém. . Tuyên bố khác không cần thiết Điều gì gây ra lỗi loại trong JavaScript?TypeError có thể xuất hiện khi. một toán hạng hoặc đối số được truyền cho một hàm không tương thích với loại mà toán tử hoặc hàm đó mong đợi ; . khi cố gắng sửa đổi một giá trị không thể thay đổi; . khi cố gắng sử dụng một giá trị theo cách không phù hợp. |