Petua untuk Menyahpepijat Kod Menggunakan Contoh Gelung dalam JavaScript
Sekarang saya akan mengajar anda metodologi untuk mencari ralat dalam kod. Bayangkan bahawa atas sebab-sebab tertentu anda tidak mengikuti nasihat dari pelajaran sebelumnya dan mendapat kod yang tidak berfungsi. Mari kita lihat bagaimana untuk mencari ralat dan memastikan ia berfungsi.
Ramai pemula menggunakan metodologi carian yang tidak betul. Mereka hanya melihat kod, dengan harapan dapat melihat ralat. Dan begitu selama beberapa jam. Ia tidak berkesan.
Metodologi yang betul ialah dengan memaparkan pembolehubah ke konsol dan menentukan sama ada nilai di dalamnya adalah yang diperlukan atau tidak. Pada masa yang sama, anda perlu bermula dari lokasi masalah yang disyaki dan bergerak ke atas mengikut kod. Mari kita lihat secara praktikal.
Sebagai contoh, katakan anda diberi tugas untuk mengulangi array yang mengandungi nombor dua digit dan mencari nombor yang digit pertamanya satu lebih besar daripada yang kedua. Untuk memudahkan, andaikan array itu menyimpan nombor dalam bentuk rentetan.
Andaikan anda menyelesaikan masalah dan mendapat kod berikut:
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); // mengeluarkan 0
Walau bagaimanapun, kod itu mengeluarkan 0. Dalam
kes ini, perkara pertama yang perlu dilakukan ialah menyemak
sama ada pelaksanaan kod masuk ke dalam if.
Mari kita paparkan sesuatu ke konsol di dalamnya:
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('!'); // tidak memaparkan apa-apa
sum += elem;
}
}
console.log(sum);
Oleh kerana tiada apa-apa muncul di konsol, ini bermakna pelaksanaan kod secara ringkasnya tidak memasuki kondisi. Mari lihat dengan mata sendiri apa yang kita bandingkan:
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' dan '11', '3' dan '21' ...
if (elem[0] === elem[1] + 1) {
sum += elem;
}
}
console.log(sum);
Hasilnya, serta-merta dapat dilihat bahawa sebutan kedua adalah dua digit. Mudah difahami bahawa ini berlaku kerana unit ditambah sebagai rentetan. Mari betulkan masalahnya:
let arr = ['21', '32', '34', '43', '45', '54', '55'];
let sum = 0;
for (let elem of arr) {
if (+elem[0] === +elem[1] + 1) { // membetulkan
sum += elem;
}
}
console.log(sum); // '021324354'
Selepas pembetulan, kita sudah dapat melihat bahawa
something muncul dalam pembolehubah sum,
walaupun tidak tepat. Walau bagaimanapun, jelas
bahawa ia mengandungi apa yang kita perlukan,
tetapi ia ditambah sebagai rentetan,
bukan nombor. Mari betulkan masalahnya:
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; // membetulkan
}
}
console.log(sum); // semuanya berfungsi
Betulkan ralat yang dilakukan dalam kod berikut:
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);