tutorial pengembangan web terbaru
 

JavaScript Praktik terbaik


Hindari variabel global, menghindari new , menghindari == , menghindari eval()


Hindari Global Variabel

Meminimalkan penggunaan variabel global.

Ini termasuk jenis semua data, benda, dan fungsi.

variabel global dan fungsi dapat ditimpa oleh script lainnya.

Menggunakan variabel lokal sebagai gantinya, dan belajar bagaimana menggunakan penutupan .


Selalu Menyatakan Variabel Lokal

Semua variabel yang digunakan dalam fungsi harus dinyatakan sebagai variabel lokal.

Variabel lokal harus dideklarasikan dengan var kata kunci, jika tidak mereka akan menjadi variabel global.

mode ketat tidak memungkinkan variabel dideklarasikan.


Deklarasi di Atas

Ini adalah praktek coding yang baik untuk menempatkan semua deklarasi di bagian atas setiap script atau fungsi.

Ini akan:

  • Berikan kode bersih
  • Menyediakan satu tempat untuk mencari variabel lokal
  • Membuatnya lebih mudah untuk menghindari yang tidak diinginkan (tersirat) variabel global
  • Mengurangi kemungkinan yang tidak diinginkan re-deklarasi
// Declare at the beginning
var firstName, lastName, price, discount, fullPrice;

// Use later
firstName = "John";
lastName = "Doe";

price = 19.90;
discount = 0.10;

fullPrice = price * 100 / discount;

Ini juga berlaku untuk variabel lingkaran:

// Declare at the beginning
var i;

// Use later
for (i = 0; i < 5; i++) {

Secara default, JavaScript bergerak semua deklarasi ke atas (hoisting JavaScript).


inisialisasi Variabel

Ini adalah praktek coding yang baik untuk menginisialisasi variabel ketika Anda menyatakan mereka.

Ini akan:

  • Berikan kode bersih
  • Menyediakan satu tempat untuk menginisialisasi variabel
  • Hindari nilai terdefinisi
// Declare and initiate at the beginning
var firstName = "",
    lastName = "",
    price = 0,
    discount = 0,
    fullPrice = 0,
    myArray = [],
    myObject = {};

Menginisialisasi variabel memberikan gambaran tentang tujuan penggunaan (dan dimaksudkan tipe data).


Tidak pernah Menyatakan Nomor, String, atau Objek Boolean

Selalu memperlakukan angka, string, atau boolean sebagai nilai-nilai primitif. Bukan sebagai obyek.

Mendeklarasikan jenis ini sebagai objek, memperlambat kecepatan eksekusi, dan menghasilkan efek samping yang buruk:

Contoh

var x = "John";             
var y = new String("John");
(x === y) // is false because x is a string and y is an object.
Cobalah sendiri "

Atau bahkan lebih buruk:

Contoh

var x = new String("John");             
var y = new String("John");
(x == y) // is false because you cannot compare objects.
Cobalah sendiri "

Jangan Gunakan new Object()

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

Contoh

var x1 = {};           // new object
var x2 = "";           // new primitive string
var x3 = 0;            // new primitive number
var x4 = false;        // new primitive boolean
var x5 = [];           // new array object
var x6 = /()/;         // new regexp object
var x7 = function(){}; // new function object
Cobalah sendiri "

Waspadalah terhadap Automatic Jenis Konversi

Hati-hati bahwa angka sengaja dapat dikonversi ke string atau NaN (Not a Number).

JavaScript longgar diketik. Sebuah variabel dapat berisi berbagai jenis data, dan variabel dapat mengubah tipe datanya:

Contoh

var x = "Hello";     // typeof x is a string
x = 5;               // changes typeof x to a number
Cobalah sendiri "

Ketika melakukan operasi matematika, JavaScript dapat mengkonversi nomor ke string:

Contoh

var x = 5 + 7;       // x.valueOf() is 12,  typeof x is a number
var x = 5 + "7";     // x.valueOf() is 57,  typeof x is a string
var x = "5" + 7;     // x.valueOf() is 57,  typeof x is a string
var x = 5 - 7;       // x.valueOf() is -2,  typeof x is a number
var x = 5 - "7";     // x.valueOf() is -2,  typeof x is a number
var x = "5" - 7;     // x.valueOf() is -2,  typeof x is a number
var x = 5 - "x";     // x.valueOf() is NaN, typeof x is a number
Cobalah sendiri "

Mengurangkan string dari string, tidak menghasilkan kesalahan tetapi kembali NaN (Not a Number):

Contoh

"Hello" - "Dolly"    // returns NaN
Cobalah sendiri "

Gunakan === Perbandingan

The == operator perbandingan selalu mengkonversi (untuk jenis pencocokan) sebelum perbandingan.

The === pasukan operator perbandingan nilai dan jenis:

Contoh

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

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

Gunakan Parameter Default

Jika fungsi ini disebut dengan argumen yang hilang, nilai argumen yang hilang diatur ke undefined .

nilai terdefinisi dapat memecahkan kode Anda. Ini adalah kebiasaan yang baik untuk menetapkan nilai default untuk argumen.

Contoh

function myFunction(x, y) {
    if (y === undefined) {
        y = 0;
    }
}
Cobalah sendiri "

Baca lebih lanjut tentang parameter fungsi dan argumen di Fungsi Parameter


Berakhir Switches Anda dengan Default

Selalu berakhir laporan beralih dengan default. Bahkan jika Anda berpikir tidak ada kebutuhan untuk itu.

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";
}
Cobalah sendiri "

Hindari Menggunakan eval()

The eval() adalah fungsi yang digunakan untuk menjalankan teks sebagai kode. Dalam hampir semua kasus, seharusnya tidak perlu untuk menggunakannya.

Karena memungkinkan kode sewenang-wenang untuk dijalankan, itu juga merupakan masalah keamanan.