Kesalahan Umum JavaScript

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) 

Coba Sendiri

Ini adalah if Pernyataan ini mengembalikan true(mungkin bukan seperti yang diharapkan), karena 10 adalah true:

var x = 0;
if (x = 10) 

Coba Sendiri

Ini adalah if Pernyataan ini mengembalikan false(mungkin bukan seperti yang diharapkan), karena 0 adalah false:

var x = 0;
if (x = 0) 

Coba Sendiri

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) 

Coba Sendiri

Pada penggunaan yang ketat, jenis data sebenarnya penting. Ini adalah if Pernyataan ini mengembalikan false:

var x = 10;
var y = "10";
if (x === y) 

Coba Sendiri

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");
}

Coba Sendiri

Ini adalah switch Pernyataan ini tidak akan menampilkan kotak dialog:

var x = 10;
switch(x) {
    case "10": alert("Hello");
}

Coba Sendiri

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"

Coba Sendiri

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"

Coba Sendiri

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

Coba Sendiri

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

Coba Sendiri

Mensiapaan kalimat string JavaScript

JavaScript memungkinkan Anda menyuntikkan kalimat ke dua baris:

contoh 1

var x =
"Hello World!";

Coba Sendiri

tetapi, mengepalukan kalimat di tengah string adalah yang salah:

contoh 2

var x = "Hello
World!";

Coba Sendiri

jika perlu mengepalukan kalimat di dalam string, maka harus menggunakan backslash:

contoh 3

var x = "Hello ",
World!";

Coba Sendiri

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
}

Coba Sendiri

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
}

Coba Sendiri

contoh 2

function myFunction(a) {
    var power = 10;
    kembali a * power;
}

Coba Sendiri

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;
}

Coba Sendiri

tetapi, jika kembali apa yang terjadi jika kalimat disuntik ke dua baris?

contoh 4

function myFunction(a) {
    var
    power = 10;  
    kembali
    a * power;
}

Coba Sendiri

Fungsi ini akan kembali: tidak terdefinisi!

kenapa? Karena JavaScript menganggap Anda ingin:

contoh 5

function myFunction(a) {
     var
    power = 10;  
    kembali;
    a * power;
}

Coba Sendiri

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"

Coba Sendiri

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

Coba Sendiri

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 terdefinisiuntuk mengecek apakah objek ada:

Contoh

if (typeof myObj === "undefined")

Coba Sendiri

tetapi Anda tidak dapat mengecek apakah objek adalah nullkarena jika objek belum terdefinisi, akan memicu kesalahan:

Salah:

if (myObj === null)

Untuk memecahkan masalah ini, harus mengecek apakah objek adalah nulldalam 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)

Coba Sendiri

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 terdefinisiadalah kesalahan yang sering terjadi oleh para pengembang JavaScript yang baru:

Contoh

for (var i = 0; i < 10; i++) {
  // Blok kode
}
return i;

Coba Sendiri