Praktik Paling Baik Pemrograman JavaScript

hindari variabel global,new,===,eval()

hindari variabel global

coba untuk mengurangi penggunaan variabel global.

termasuk semua tipe data, objek, dan fungsi.

variabel global dan fungsi dapat diubah oleh skrip lain.

gunakan variabel lokal sebagai pengganti, dan belajar bagaimana menggunakankelompok.

selalu deklarasikan variabel lokal

semua variabel yang digunakan di dalam fungsi harus dideklarasikan sebagailokalvariabel.

variabel lokalwajibdengan var dengan kata kunci untuk deklarasikan, sebaliknya mereka akan menjadi variabel global.

mode yang ketat tidak mengijinkan variabel yang belum dideklarasikan.

deklarasi di atas

satu kebiasaan yang bagus adalah menempatkan semua deklarasi di atas setiap skrip atau fungsi.

Manfaatnya adalah:

  • mendapatkan kode yang lebih bersih
  • menyediakan tempat yang bagus untuk mencari variabel lokal
  • lebih mudah menghindari variabel global yang tidak perlu
  • mengurangi kemungkinan pere宣言 yang tidak perlu
// deklarasi di atas
var firstName, lastName, price, discount, fullPrice;
// digunakan nanti
firstName = "Bill";
lastName = "Gates";
price = 19.90;
discount = 0.10;
fullPrice = price * 100 / discount;

juga dapat digunakan untuk variabel perulangan:

// deklarasi di atas
var i;
// digunakan nanti
for (i = 0; i < 5; i++)  {

secara default, JavaScript akan memindahkan semua deklarasi ke atas (JavaScript hoisting).

inisialisasi variabel

Habit menginisialisasi variabel saat mendeklarasikannya adalah baik.

Manfaatnya adalah:

  • kode yang lebih rapi
  • inisialisasi variabel di tempat yang terpisah
  • hindari nilai yang belum diatur
// Pemilihan deklarasi dan inisialisasi di awal
var firstName = "",
    lastName  = "",
    price = 0,
    discount = 0,
    fullPrice  = 0,
    myArray = [],
    myObject = {};

Inisialisasi variabel memungkinkan kita mengetahui penggunaan yang diharapkan dan tipe data yang diharapkan.

Jangan deklarasikan objek angka, string, atau boolean

Selalu lihat angka, string, atau boolean sebagai nilai dasar, bukan objek.

Jika mengklasifikasikan tipe ini sebagai objek, akan menurunkan kecepatan eksekusi dan menghasilkan efek samping yang mengecewakan:

Contoh

var x = "Bill";             
var y = new String("Bill");
(x === y) // Hasilnya false, karena x adalah string dan y adalah objek.

Coba sendiri

atau bahkan yang buruknya:

Contoh

var x = new String("Bill");             
var y = new String("Bill");
(x == y) // Hasilnya false, karena Anda tidak dapat membandingkan objek.

Coba sendiri

Jangan gunakan new Object()

  • Gunakan {} untuk menggantikan new Object()
  • Gunakan "" untuk menggantikan new String()
  • Gunakan 0 untuk menggantikan new Number()
  • Gunakan false untuk menggantikan new Boolean()
  • Gunakan [] untuk menggantikan new Array()
  • Gunakan /()/ untuk menggantikan new RegExp()
  • Gunakan function (){} untuk menggantikan new Function()

Contoh

var x1 = {};           // Baru object baru
var x2 = "";           // Baru nilai string dasar
var x3 = 0;            // Baru nilai numerik dasar
var x4 = false;        // Baru nilai boolean dasar
var x5 = [];           // Baru object array
var x6 = /()/;         // Baru ekspresi reguler
var x7 = function(){}; // Baru object fungsi

Coba sendiri

Anda harus menyadari pemuatan tipe otomatis

Anda harus menyadari bahwa angka dapat secara tak sengaja diubah menjadi string atau NaN(Bukan Angka).

JavaScript adalah tipe lemah. Variabel dapat mengandung berbagai tipe data, dan variabel dapat berubah tipe datanya:

Contoh

var x = "Hello";     // typeof x adalah string
x = 5;               // Ubah typeof x menjadi numerik

Coba sendiri

Jika melakukan operasi matematika, JavaScript dapat mengkonversi bilangan ke string:

Contoh

var x = 5 + 7;       // x.valueOf() adalah 12, typeof x adalah numerik
var x = 5 + "7";     // x.valueOf() adalah 57, typeof x adalah string
var x = "5" + 7;     // x.valueOf() adalah 57, typeof x adalah string
var x = 5 - 7;       // x.valueOf() adalah -2, typeof x adalah numerik
var x = 5 - "7";     // x.valueOf() adalah -2, typeof x adalah numerik
var x = "5" - 7;     // x.valueOf() adalah -2, typeof x adalah numerik
var x = 5 - "x";     // x.valueOf() adalah NaN, typeof x adalah numerik

Coba sendiri

Mengurangi string dengan string tidak akan menghasilkan kesalahan tetapi mengembalikan NaN(Tidak ada Bilangan):

Contoh

"Hello" - "Dolly"    // mengembalikan NaN

Coba sendiri

Gunakan === untuk membandingkan

== Operator perbandingan selalu melakukan konversi tipe sebelum membandingkan (untuk mencocokkan tipe).

=== Operator akan memaksa perbandingan nilai dan tipe:

Contoh

0 == "";        // true
1 == "1";       // true
1 == true;      // true
0 === "";       // false
1 === "1";      // false
1 === true;     // false

Coba sendiri

Menggunakan Parameter Defaults

jika parameter yang kurang saat memanggil fungsi, nilai parameter yang hilang akan diatur sebagai tak_didefinisikan.

tak_didefinisikan nilai akan merusak kode Anda. Menetapkan nilai default untuk parameter adalah kebiasaan yang bagus.

Contoh

fungsi myFunction(x, y) {
    jika (y === tak_didefinisikan) {
        y = 0;
    }
}

Coba sendiri

SilakanParameter FungsiBaca lebih lanjut tentang parameter fungsi di bab ini.

default untuk menutup switch

Gunakan default untuk menutup switch Perintah. bahkan jika Anda berpikir tidak perlu adanya.

Contoh

switch (new Date().getDay()) {
    case 0:
        day = "Sunday";
        break;
    case 1:
        day = "Monday";
         break;
    case 2:
        day = "Tuesday";
         break;
    case 3:
        day = "Wednesday";
         break;
    case 4:
        day = "Thursday";
         break;
    case 5:
        day = "Friday";
         break;
    case 6:
        day = "Saturday";
         break;
    default:
        day = "Unknown";
} 

Coba sendiri

Avoid the use of eval()

eval() Fungsi digunakan untuk memungkinkan teks sebagai kode. Pada hampir semua kasus, tidak perlu digunakan.

Karena memungkinkan eksekusi kode arbitrer, ini juga berarti risiko keamanan.