
Terkadang menulis kode JavaScript sulit, dan terkadang hanya menakutkan, yang biasa bagi banyak pengembang. Dalam prosesnya, kesalahan pasti muncul, dan beberapa dari mereka sering diulang. Artikel, yang dirancang untuk pengembang pemula, berbicara tentang kesalahan ini dan bagaimana menyelesaikannya. Untuk kejelasan, nama fungsi, properti, dan objek diambil dari
lagu populer . Semua ini membantu mengingat dengan cepat cara memperbaiki kesalahan umum.
Kami mengingatkan Anda: untuk semua pembaca "Habr" - diskon 10.000 rubel saat mendaftar untuk kursus Skillbox menggunakan kode promo "Habr".
Skillbox merekomendasikan: Kursus praktis "Pengembang Mobile PRO" .
TypeError: properti tidak didefinisikan
let girl = { name: "Lucky", location: "Hollywood", profession: "star", thingsMissingInHerLife: true, lovely: true, cry: function() { return "cry, cry, cries in her lonely heart" } } console.log(girl.named.lucky)
Kode contoh di atas menampilkan UnEught TypeError: Tidak dapat membaca properti 'beruntung' dari kesalahan yang tidak terdefinisi. Masalahnya adalah bahwa objek gadis tidak memiliki properti bernama, meskipun ada properti nama. Dan karena gadis properti. Dinamai tidak didefinisikan, tidak mungkin untuk mengaksesnya, karena secara resmi tidak ada. Tetapi jika Anda mengganti girl.named.lucky dengan girl.name, maka semuanya akan bekerja dan program akan mengembalikan Lucky.
Baca lebih lanjut tentang properti di
sini .
Metode untuk Memperbaiki Kesalahan TypeError
Kesalahan TypeError terjadi ketika seorang programmer mencoba melakukan tindakan pada data yang tidak cocok dengan tipe tertentu. Sebagai contoh, gunakan .bold (), minta properti yang tidak ditentukan, atau panggil fungsi yang sebenarnya bukan fungsi.
Jadi, jika Anda mencoba memanggil gadis (), maka kesalahan UnEught TypeError akan muncul: yourVariable.bold bukan fungsi dan gadis bukan fungsi, karena sebenarnya objek tersebut dipanggil, bukan fungsi.
Untuk menghilangkan kesalahan, Anda perlu mempelajari variabel. Jadi apa itu perempuan? Dan apa itu girl.named? Anda dapat mengetahui apakah Anda menganalisis kode, menampilkan variabel menggunakan console.log with, perintah debugger, atau dengan memanggil nama variabel di konsol. Anda perlu memastikan bahwa adalah mungkin untuk beroperasi dengan tipe data yang terkandung dalam variabel. Jika tidak cocok, ubah, misalnya, tambahkan kondisi atau coba..tangkap blok dan dapatkan kontrol atas operasi.
Stack overflow
Jika Anda yakin penulis kata-kata dari lagu Baby One More Time (ini adalah Britney Spears, ya), maka kata hit dalam konteks ini berarti keinginan penyanyi untuk dipanggil lagi (di sini ada penjelasan tentang konteks lagu tersebut, kira-kira Penerjemah). Mungkin saja keinginan ini akan mengarah pada peningkatan jumlah panggilan dalam kehidupan nyata. Namun dalam pemrograman, ini adalah rekursi yang dapat menyebabkan kesalahan jika stack stack meluap.
Kesalahannya adalah sebagai berikut:
Kesalahan: Kehabisan ruang tumpukan (Tepi)
InternalError: terlalu banyak rekursi (Firefox)
RangeError: Ukuran tumpukan panggilan maksimum terlampaui (Chrome)
Stack overflow terjadi jika pengembang tidak memperhitungkan casing dasar dalam rekursi, atau jika kode tidak mengatasi casing yang disediakan.
function oneMoreTime(stillBelieve=true, loneliness=0) { if (!stillBelieve && loneliness < 0) return loneliness++ return oneMoreTime(stillBelieve, loneliness) }
Dalam hal ini, stillBelieve tidak pernah dapat disetel ke false, sehingga oneMoreTime akan dipanggil setiap waktu, tetapi fungsinya tidak akan pernah berakhir.
Jika Anda mulai berharap untuk dua teman, ini akan mengurangi kesepian (kesepian), dan Anda tidak bisa menunggu panggilan.
function oneMoreTime(stillBelieve=true, loneliness=0) { if (!stillBelieve && loneliness < 0) return loneliness-- stillBelieve = false return oneMoreTime(stillBelieve, loneliness) }
Sebagai contoh, ada kasus dengan loop tak terbatas, ketika sistem tidak memberikan pesan kesalahan, dan halaman di mana kode JavaScript dieksekusi hanya membeku. Ini terjadi jika loop sementara tidak memiliki kondisi terminasi.
let worldEnded = false while (worldEnded !== true) { console.log("Keep on dancin' till the world ends") }
Anda dapat memecahkan masalah sebagai berikut:
let worldEnded = false while (worldEnded !== true) { console.log("Keep on dancin' till the world ends") worldEnded = true }
Debug loop dan rekursi tak berujung
Jika Anda memiliki masalah dengan loop tak terbatas, di Chrome atau Edge Anda harus menutup tab, dan di Firefox, tutup jendela browser. Setelah itu, Anda perlu menganalisis kode dengan cermat. Jika Anda tidak dapat menemukan masalah, Anda harus menambahkan perintah debugger ke loop atau fungsi dan memeriksa nilai variabel. Jika hasilnya tidak seperti yang diharapkan, maka ganti, itu bisa dilakukan dengan mudah.
Pada contoh di atas, debugger harus ditambahkan sebagai baris pertama dari suatu fungsi atau loop. Maka Anda perlu membuka tab debug di Chrome dengan menganalisis variabel dalam cakupan. Dengan menggunakan tombol berikutnya, Anda dapat melacak perubahan mereka di setiap iterasi. Melakukan semua ini sederhana, dan dalam banyak kasus masalahnya adalah.
Anda dapat membaca lebih lanjut tentang semua ini di sini (
untuk Chrome ) dan di sini (
untuk Firefox ).
Kesalahan sintaksis
Salah satu kesalahan JavaScript yang paling umum adalah SyntaxError. Hindari mereka membantu editor teks ekstensi. Jadi, Bracket Pair Colorizer menandai tanda kurung dalam kode dalam berbagai warna, dan Prettier atau alat analisis serupa memungkinkan untuk menemukan kesalahan dengan cepat. Opsi terbaik untuk mengurangi kemungkinan SyntaxError adalah bersarang minimal.
Bagikan komentar: apa yang Anda lakukan untuk menghindari kesalahan atau dengan cepat mendeteksi dan menghilangkannya?
Skillbox merekomendasikan: