Kesalahan Umum JavaScript
- Halaman Sebelumnya Praktik Terbaik JS
- Halaman Berikutnya Kinerja JS
Di bab ini dijelaskan beberapa kesalahan umum JavaScript.
penggunaan secara tak sengaja operator atribusi
Jika programer menggunakan if
penggunaan secara tak sengaja operator atribusi (=
)dalam operator penggabungan (====
), program JavaScript dapat menghasilkan beberapa hasil yang tak terduga.
Ini adalah if
Pernyataan ini mengembalikan false
(seperti yang diharapkan), karena x tidak sama dengan 10:
var x = 0; if (x == 10)
Ini adalah if
Pernyataan ini mengembalikan true
(mungkin bukan seperti yang diharapkan), karena 10 adalah true:
var x = 0; if (x = 10)
Ini adalah if
Pernyataan ini mengembalikan false
(mungkin bukan seperti yang diharapkan), karena 0 adalah false:
var x = 0; if (x = 0)
Atribusi selalu mengembalikan nilai yang diatribusikan.
harapkan penggunaan yang lemah
Pada penggunaan yang biasa, jenis data tidak penting. Ini adalah if
Pernyataan ini mengembalikan true
:
var x = 10; var y = "10"; if (x == y)
Pada penggunaan yang ketat, jenis data sebenarnya penting. Ini adalah if
Pernyataan ini mengembalikan false
:
var x = 10; var y = "10"; if (x === y)
Salah umum adalah lupa untuk switch
Pernyataan ini menggunakan penggunaan yang ketat:
Ini adalah switch
Pernyataan ini akan menampilkan kotak dialog:
var x = 10; switch(x) { case 10: alert("Hello"); }
Ini adalah switch
Pernyataan ini tidak akan menampilkan kotak dialog:
var x = 10; switch(x) { case "10": alert("Hello"); }
Addition dan concatenation yang menakjubkan
additiondigunakan untuknumeric.
concatenationdigunakan untukstring.
Pada JavaScript, kedua operasi ini menggunakan +
Operator.
Seperti halnya, penambahan angka sebagai angka, dengan penambahan angka sebagai string, akan menghasilkan hasil yang berbeda:
var x = 10 + 5; // Hasil di x adalah 15 var x = 10 + "5"; // Hasil di x adalah "105"
Jika penggabungan dua variabel, sulit memprediksi hasil:
var x = 10; var y = 5; var z = x + y; // Hasil di z adalah 15 var x = 10; var y = "5"; var z = x + y; // Hasil di z adalah "105"
Titik floating point yang menakjubkan
Semua angka di JavaScript disimpan dalam bentuk 64 bitAngka pecahan (Floats).
Seluruh bahasa pemrograman, termasuk JavaScript, mengalami kesulitan dalam mengatur nilai bilangan pecahan:
var x = 0.1; var y = 0.2; var z = x + y // hasil di z bukan 0.3
Untuk memecahkan masalah di atas, gunakan operasi kali dan bagi:
Contoh
var z = (x * 10 + y * 10) / 10; // hasil di z akan menjadi 0.3
Mensiapaan kalimat string JavaScript
JavaScript memungkinkan Anda menyuntikkan kalimat ke dua baris:
contoh 1
var x = "Hello World!";
tetapi, mengepalukan kalimat di tengah string adalah yang salah:
contoh 2
var x = "Hello World!";
jika perlu mengepalukan kalimat di dalam string, maka harus menggunakan backslash:
contoh 3
var x = "Hello ", World!";
tanda titik koma yang salah
karena tanda titik koma yang salah, blok kode ini akan dijalankan terlepas dari nilai x:
jika (x == 19); { // blok kode }
Mensiapaan kalimat return
Menutup kalimat secara otomatis di akhir baris adalah perilaku baku JavaScript.
Seperti ini, dua contoh berikut ini akan kembali hasil yang sama:
contoh 1
function myFunction(a) { var power = 10 kembali a * power }
contoh 2
function myFunction(a) { var power = 10; kembali a * power; }
JavaScript juga memungkinkan Anda menyuntikkan kalimat ke dua baris.
Seperti ini, contoh 3 juga akan kembali hasil yang sama:
contoh 3
function myFunction(a) { var power = 10; kembali a * power; }
tetapi, jika kembali
apa yang terjadi jika kalimat disuntik ke dua baris?
contoh 4
function myFunction(a) { var power = 10; kembali a * power; }
Fungsi ini akan kembali: tidak terdefinisi
!
kenapa? Karena JavaScript menganggap Anda ingin:
contoh 5
function myFunction(a) { var power = 10; kembali; a * power; }
penjelasan
jika kalimat tidak lengkap:
var
JavaScript akan melengkapkan kalimat ini dengan membaca baris berikutnya:
power = 10;
tetapi karena kalimat ini adalah yang lengkap:
kembali
JavaScript akan menutup kalimat secara otomatis:
kembali;
hal ini terjadi karena, dalam JavaScript, penggunaan tanda titik koma untuk menutup (menutup) kalimat adalah opsional.
JavaScript akan menutup kembali
kalimat, karena itu sendiri adalah kalimat yang lengkap.
jangan pernah melanjutkan kembali
kalimat berlanjut ke baris berikutnya.
Melalui indeks penamaan untuk mengakses array
Banyak bahasa pemrograman mendukung array dengan indeks yang dinamis.
Array dengan indeks yang dinamis disebut array yang berhubungan (atau hash).
JavaScript Tidak didukungArray dengan indeks yang dinamis.
Dalam JavaScript,ArrayDenganIndeks numerik:
Contoh
var person = []; person[0] = "Bill"; person[1] = "Gates"; person[2] = 46; var x = person.length; // person.length akan mengembalikan 3 var y = person[0]; // person[0] akan mengembalikan "Bill"
Dalam JavaScript,ObjekDenganIndeks yang dinamis.
Jika Anda menggunakan indeks yang dinamis, JavaScript akan mengubah array menjadi objek standar saat mengakses array.
Setelah diulang ulang otomatis, metode atau atribut array akan menghasilkan hasil yang belum terdefinisi atau yang tidak benar:
Contoh
var person = []; person["firstName"] = "Bill"; person["lastName"] = "Gates"; person["age"] = 46; var x = person.length; // person.length akan mengembalikan 0 var y = person[0]; // person[0] akan mengembalikan undefined
Gunakan koma untuk menutup definisi
Koma di akhir definisi objek dan array adalah sah di ECMAScript 5.
Contoh instansi objek:
person = {firstName:"Bill", lastName:"Gates", age:62,}
Contoh instansi array:
points = [35, 450, 2, 7, 30, 16,];
Peringatan!!!
Internet Explorer 8 akan patah.
JSON tidak mengizinkan koma di akhir.
JSON:
person = {firstName:"Bill", lastName:"Gates", age:62}
JSON:
points = [35, 450, 2, 7, 30, 16];
Undefined bukan Null
Objek JavaScript, variabel, atribut dan metode dapat belum terdefinisi.
Selain itu, nilai objek JavaScript yang kosong dapat menjadi null
.
Ini mungkin akan membuat mengecek apakah objek kosong menjadi稍微有点困难。
Anda dapat memeriksa apakah tipe adalah tidak terdefinisi
untuk mengecek apakah objek ada:
Contoh
if (typeof myObj === "undefined")
tetapi Anda tidak dapat mengecek apakah objek adalah null
karena jika objek belum terdefinisi, akan memicu kesalahan:
Salah:
if (myObj === null)
Untuk memecahkan masalah ini, harus mengecek apakah objek adalah null
dalam lugar undefined.
tetapi ini masih akan memicu kesalahan:
Salah:
if (myObj !== null && typeof myObj !== "undefined")
Jadi, sebelum mengecek bukan null, harus mengecek jika belum terdefinisi:
Benar:
if (typeof myObj !== "undefined" && myObj !== null)
menantang area lingkungan blok.
JavaScript tidakmembuat area lingkungan baru untuk setiap blok kode.
Banyak bahasa pemrograman seperti ini, tetapi JavaScript Tidak begitu.
menganggap kode ini akan mengembalikan tidak terdefinisi
adalah kesalahan yang sering terjadi oleh para pengembang JavaScript yang baru:
Contoh
for (var i = 0; i < 10; i++) { // Blok kode } return i;
- Halaman Sebelumnya Praktik Terbaik JS
- Halaman Berikutnya Kinerja JS