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):
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.
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.