tutorial pengembangan web terbaru
 

JavaScript Kesalahan Umum


Bab ini menunjukkan beberapa kesalahan JavaScript umum.


Sengaja Menggunakan Operator Assignment

Program JavaScript dapat menghasilkan hasil yang tidak diharapkan jika programmer sengaja menggunakan operator penugasan (=) , bukan operator perbandingan (==) dalam sebuah pernyataan jika.

Ini if pernyataan mengembalikan false (seperti yang diharapkan) karena x tidak sama dengan 10:

var x = 0;
if (x == 10)
Cobalah sendiri "

Ini if pernyataan mengembalikan true (mungkin tidak diharapkan), karena 10 adalah benar:

var x = 0;
if (x = 10)
Cobalah sendiri "

Ini if pernyataan mengembalikan false (mungkin tidak diharapkan), karena 0 adalah palsu:

var x = 0;
if (x = 0)
Cobalah sendiri "

Tugas selalu mengembalikan nilai tugas.


Mengharapkan Perbandingan Longgar

Dibandingkan reguler, tipe data tidak masalah. Pernyataan ini jika kembali true :

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

Sebagai perbandingan yang ketat, tipe data itu penting. Pernyataan ini jika mengembalikan false :

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

Ini adalah kesalahan umum untuk melupakan bahwa laporan beralih menggunakan perbandingan yang ketat:

saklar kasus ini akan menampilkan peringatan:

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

saklar hal ini tidak akan menampilkan peringatan:

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

Membingungkan Penambahan & Concatenation

Selain adalah tentang menambahkan angka.

Rangkaian adalah tentang menambahkan string.

Dalam JavaScript kedua operasi menggunakan operator + yang sama.

Karena itu, menambahkan nomor sebagai nomor akan menghasilkan hasil yang berbeda dari menambahkan nomor sebagai string:

var x = 10 + 5;          // the result in x is 15
var x = 10 + "5";        // the result in x is "105"
Cobalah sendiri "

Ketika menambahkan dua variabel, bisa sulit untuk mengantisipasi hasilnya:

var x = 10;
var y = 5;
var z = x + y;           // the result in z is 15

var x = 10;
var y = "5";
var z = x + y;           // the result in z is "105"
Cobalah sendiri "

kesalahpahaman Mengapung

Semua angka dalam JavaScript disimpan sebagai 64-bit nomor floating point (Mengapung).

Semua bahasa pemrograman, termasuk JavaScript, mengalami kesulitan dengan tepat nilai floating point:

var x = 0.1;
var y = 0.2;
var z = x + y            // the result in z will not be 0.3
if (z == 0.3)            // this if test will fail
Cobalah sendiri "

Untuk mengatasi masalah di atas, hal ini membantu untuk memperbanyak dan membagi:

Contoh

var z = (x * 10 + y * 10) / 10;       // z will be 0.3
Cobalah sendiri "

Melanggar String JavaScript

JavaScript akan memungkinkan Anda untuk memecahkan sebuah pernyataan menjadi dua baris:

contoh 1

var x =
"Hello World!";
Cobalah sendiri "

Tapi, melanggar pernyataan di tengah string tidak akan bekerja:

contoh 2

var x = "Hello
World!";
Cobalah sendiri "

Anda harus menggunakan "backslash" jika Anda harus menghancurkan pernyataan dalam sebuah string:

contoh 3

var x = "Hello \
World!";
Cobalah sendiri "

lupa tempat menyimpan Titik koma

Karena titik koma salah tempat, blok kode ini akan mengeksekusi terlepas dari nilai x:

if (x == 19);
{
    // code block 
}
Cobalah sendiri "

Melanggar Pernyataan Kembali

Ini adalah perilaku default JavaScript untuk menutup pernyataan secara otomatis pada akhir baris.

Karena itu, dua contoh ini akan mengembalikan hasil yang sama:

contoh 1

function myFunction(a) {
    var power = 10 
    return a * power
}
Cobalah sendiri "

contoh 2

function myFunction(a) {
    var power = 10;
    return a * power;
}
Cobalah sendiri "

JavaScript juga akan memungkinkan Anda untuk memecahkan sebuah pernyataan menjadi dua baris.

Karena itu, contoh 3 juga akan mengembalikan hasil yang sama:

contoh 3

function myFunction(a) {
    var
    power = 10; 
    return a * power;
}
Cobalah sendiri "

Tapi, apa yang akan terjadi jika Anda melanggar pernyataan kembali dalam dua baris seperti ini:

contoh 4

function myFunction(a) {
    var
    power = 10; 
    return
    a * power;
}
Cobalah sendiri "

fungsi akan kembali terdefinisi!

Mengapa? Karena JavaScript berpikir Anda berarti:

contoh 5

function myFunction(a) {
    var
    power = 10; 
    return;
    a * power;
}
Cobalah sendiri "

Penjelasan

Jika pernyataan tidak lengkap seperti:

var

JavaScript akan mencoba untuk menyelesaikan pernyataan dengan membaca baris berikutnya:

power = 10;

Tapi karena pernyataan ini selesai:

return

JavaScript secara otomatis akan menutup seperti ini:

return;

Hal ini terjadi karena penutupan (berakhir) pernyataan dengan titik koma adalah opsional dalam JavaScript.

JavaScript akan menutup pernyataan kembali pada akhir baris, karena merupakan pernyataan lengkap.

Tidak pernah melanggar pernyataan kembali.


Mengakses Array dengan Indeks Dinamakan

Banyak bahasa pemrograman mendukung array dengan nama indeks.

Array dengan nama indeks yang disebut array asosiatif (atau hash).

JavaScript tidak mendukung array dengan nama indeks.

Dalam JavaScript, array menggunakan indeks bernomor:

Contoh

var person = [];
person[0] = "John";
person[1] = "Doe";
person[2] = 46;
var x = person.length;         // person.length will return 3
var y = person[0];             // person[0] will return "John"
Cobalah sendiri "

Dalam JavaScript, objek menggunakan bernama indeks.

Jika Anda menggunakan indeks bernama, ketika mengakses sebuah array, JavaScript akan mendefinisikan array ke objek standar.

Setelah redefinisi otomatis, metode array dan properti akan menghasilkan hasil yang tidak terdefinisi atau salah:

Contoh:

var person = [];
person["firstName"] = "John";
person["lastName"] = "Doe";
person["age"] = 46;
var x = person.length;         // person.length will return 0
var y = person[0];             // person[0] will return undefined
Cobalah sendiri "

Mengakhiri Definisi Array dengan Comma

Salah:

points = [40, 100, 1, 5, 25, 10,];

Beberapa JSON dan JavaScript engine akan gagal, atau bertingkah aneh.

Benar:

points = [40, 100, 1, 5, 25, 10];

Mengakhiri Definisi Object dengan Comma

Salah:

person = {firstName:"John", lastName:"Doe", age:46,}

Beberapa JSON dan JavaScript engine akan gagal, atau bertingkah aneh.

Benar:

person = {firstName:"John", lastName:"Doe", age:46}

Terdefinisi adalah Tidak Null

Dengan JavaScript, null untuk objek, tidak terdefinisi adalah untuk variabel, properti, dan metode.

Untuk menjadi nol, sebuah objek harus didefinisikan, jika tidak maka akan terdefinisi.

Jika Anda ingin menguji apakah suatu objek ada, ini akan melemparkan kesalahan jika objek tidak terdefinisi:

Salah:

if (myObj !== null && typeof myObj !== "undefined") 

Karena itu, Anda harus menguji typeof () pertama:

Benar:

if (typeof myObj !== "undefined" && myObj !== null) 

Mengharapkan Blok Tingkat Scope

JavaScript tidak membuat lingkup baru untuk setiap blok kode.

Memang benar dalam banyak bahasa pemrograman, tetapi tidak benar dalam JavaScript.

Ini adalah kesalahan umum, kalangan pengembang JavaScript baru, untuk percaya bahwa kode ini mengembalikan terdefinisi:

Contoh

for (var i = 0; i < 10; i++) {
    // some code
}
return i;
Cobalah sendiri "