Praktik yang terbaik 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 dijalankan ulang oleh skrip lain.

gunakan variabel lokal sebagai pengganti, dan pelajari bagaimana untuk menggunakanklosur

selalu deklarasikan variabel lokal

semua variabel yang digunakan di dalam fungsi harus dideklarasikan sebagailokalvariabel.

variabel lokalwajibmelalui var menggunakan kata kunci untuk deklarasi, atau mereka akan menjadi variabel global.

mode yang ketat tidak mengizinkan variabel yang belum diumumkan.

deklarasi di atas

satu kebiasaan baik dalam pemrograman adalah menempatkan semua deklarasi di atas setiap skrip atau fungsi.

Manfaatnya adalah:

  • mendapatkan kode yang lebih bersih
  • menyediakan tempat yang baik untuk mencari variabel lokal
  • lebih mudah menghindari variabel global yang tidak perlu
  • mengurangi kemungkinan deklarasi ulang 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;

boleh digunakan untuk variabel perulangan:

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

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

inisialisasi variabel

Merupakan kebiasaan yang baik untuk menginisialisasi variabel ketika anda mengumumkannya.

Manfaatnya adalah:

  • Kode yang lebih bersih
  • Inisialisasi variabel di tempat yang terpisah
  • Penghindaran nilai tak definisi
// Pemulaian dan inisialisasi di awal
var firstName = "",
    lastName  = "",
    price = 0,
    discount = 0,
    fullPrice  = 0,
    myArray = [],
    myObject = {};

Pemulaian variabel memungkinkan kami untuk memahami penggunaan yang diharapkan dan jenis data yang diharapkan.

Jangan mengumumkan nombor, string atau boolean objek

Anda harus selalu melihat nombor, string atau boolean sebagai nilai asal, bukan objek.

Jika anda mengumumkan jenis jenis ini sebagai objek, akan menurunkan kelajuan eksekusi dan menghasilkan kesan buruk:

Example

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

Try it yourself

atau bahkan yang buruk:

Example

var x = new String("Bill");             
var y = new String("Bill");
(x == y) // Hasilnya adalah false, kerana anda tak boleh membandingkan objek.

Try it yourself

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()

Example

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

Try it yourself

Anda harus menyadari penukaran jenis secara automatik

Anda harus menyadari bahawa nombor boleh secara tak sengaja diubah kepada string atau NaN(Bukan Bilangan)。

JavaScript adalah jenis lepas. Variabel boleh mengandungi jenis data yang berbeza, dan variabel boleh mengubah jenis datanya:

Example

var x = "Hello";     // typeof x adalah string
x = 5;               // Ubah typeof x kepada bilangan

Try it yourself

Jika melakukan operasi matematik, JavaScript dapat mengubah nilai ke string:

Example

var x = 5 + 7;       // x.valueOf() adalah 12,  typeof x adalah bilangan
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 bilangan
var x = 5 - "7";     // x.valueOf() adalah -2,  typeof x adalah bilangan
var x = "5" - 7;     // x.valueOf() adalah -2,  typeof x adalah bilangan
var x = 5 - "x";     // x.valueOf() adalah NaN, typeof x adalah bilangan

Try it yourself

Mengurangkan string dengan string, akan mengembalikan NaN(Tidak ada Bilangan):

Example

"Hello" - "Dolly"    // kembalikan NaN

Try it yourself

Gunakan === untuk membandingkan

== Pembanding selalu melakukan penukaran jenis sebelum membandingkan (untuk memadankan jenis).

=== Operator akan memaksa pembandingan nilai dan jenis:

Example

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

Try it yourself

Penggunaan Parameter Defaults

jika kurang satu parameter ketika memanggil fungsi, nilai parameter yang hilang akan diatur kepada tak ditakrifkan

tak ditakrifkan nilai akan merosakkan kod anda. Menetapkan nilai asal untuk parameter adalah kebiasaan yang baik.

Example

function myFunction(x, y) {
    jika (y === tak ditakrifkan) {
        y = 0;
    }
}

Try it yourself

Please checkFunction ParametersRead more about function parameters in this chapter.

to end the switch with default

Please use default to end your switch statement. Even if you think there is no need for it.

Example

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

Try it yourself

Avoid using eval()

eval() Functions are used to allow text as code. In almost all cases, there is no need to use it.

Because it allows arbitrary code to run, it also means security issues.