⊗jsPmLpDbg 167 of 505 menu

Mẹo gỡ lỗi mã nguồn với ví dụ về vòng lặp trong JavaScript

Bây giờ tôi sẽ dạy bạn phương pháp tìm lỗi trong mã. Hãy tưởng tượng rằng vì một sự hiểu lầm nào đó, bạn đã không làm theo lời khuyên từ bài học trước và nhận được mã không hoạt động. Hãy cùng xem cách tìm lỗi và làm cho nó hoạt động.

Nhiều người mới bắt đầu sử dụng phương pháp tìm kiếm không chính xác. Họ lấy mã ra và nhìn vào nó, hy vọng sẽ nhận thấy lỗi. Và cứ như vậy trong vài giờ. Điều đó không hiệu quả.

Phương pháp chính xác là in các biến ra console và xác định xem giá trị trong đó có phải là thứ cần thiết hay không. Trong trường hợp này, bạn cần bắt đầu từ vị trí nghi ngờ có vấn đề và di chuyển ngược lên phía trên trong mã. Hãy xem xét trong thực tế.

Ví dụ, giả sử bạn có nhiệm vụ duyệt qua một mảng chứa các số có hai chữ số và tìm các số mà chữ số đầu tiên lớn hơn chữ số thứ hai một đơn vị. Giả sử để đơn giản, các số trong mảng được lưu trữ dưới dạng chuỗi.

Giả sử bạn đã giải quyết nhiệm vụ và nhận được mã sau:

let arr = ['21', '32', '34', '43', '45', '54', '55']; let sum = 0; for (let elem of arr) { if (elem[0] === elem[1] + 1) { sum += elem; } } console.log(sum); // trả về 0

Tuy nhiên, mã trả về 0. Trong trường hợp này, việc đầu tiên cần làm là kiểm tra xem liệu việc thực thi mã có đi vào trong câu lệnh if không. Hãy in một cái gì đó ra console bên trong nó:

let arr = ['21', '32', '34', '43', '45', '54', '55']; let sum = 0; for (let elem of arr) { if (elem[0] === elem[1] + 1) { console.log('!'); // không in ra gì cả sum += elem; } } console.log(sum);

Vì không có gì xuất hiện trong console, điều này có nghĩa là việc thực thi mã đơn giản là không đi vào điều kiện. Hãy tự mình xem xét chúng ta đang so sánh những gì:

let arr = ['21', '32', '34', '43', '45', '54', '55']; let sum = 0; for (let elem of arr) { console.log(elem[0], elem[1] + 1); // '2' và '11', '3' và '21' ... if (elem[0] === elem[1] + 1) { sum += elem; } } console.log(sum);

Kết quả là ngay lập tức có thể thấy, số hạng thứ hai có hai chữ số. Dễ dàng hiểu rằng điều này là do số một được cộng như một chuỗi. Hãy sửa vấn đề:

let arr = ['21', '32', '34', '43', '45', '54', '55']; let sum = 0; for (let elem of arr) { if (+elem[0] === +elem[1] + 1) { // sửa lỗi sum += elem; } } console.log(sum); // '021324354'

Sau khi sửa, chúng ta đã thấy rằng trong biến sum đã có một cái gì đó xuất hiện, mặc dù không chính xác. Tuy nhiên, có thể thấy rằng đó là thứ chúng ta cần, nhưng chúng được cộng lại dưới dạng chuỗi, chứ không phải số. Hãy sửa vấn đề:

let arr = ['21', '32', '34', '43', '45', '54', '55']; let sum = 0; for (let elem of arr) { if (+elem[0] === +elem[1] + 1) { sum += +elem; // sửa lỗi } } console.log(sum); // tất cả hoạt động

Sửa các lỗi được mắc phải trong mã sau:

let obj = {a: 10, b: 20, c: 30, d: 40, e: 50}; let sum = 0; for (let elem in obj) { if (elem[0] === '1' && elem[0] === '2') { sum += +elem; } } console.log(sum);
Tiếng Việt
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbek
Chúng tôi sử dụng cookie để vận hành trang web, phân tích và cá nhân hóa. Việc xử lý dữ liệu được thực hiện tuân theo Chính sách bảo mật.
chấp nhận tất cả tùy chỉnh từ chối