Menggunakan `var` atau tidak
Anda harus memperkenalkan variabel apa pun dengan var
pernyataan, jika tidak maka akan masuk ke ruang lingkup global.
Perlu disebutkan bahwa dalam mode ketat ( "use strict";
) tugas variabel yang dideklarasikan melemparReferenceError
.
Saat ini JavaScript tidak memiliki cakupan blok. Sekolah Crockford mengajarkan Anda untuk meletakkan pernyataan var di awal function function , sementara Dojo's Style Guide membaca bahwa semua variabel harus dideklarasikan dalam ruang lingkup sekecil mungkin . ( let
Pernyataan dan definisi yang diperkenalkan dalam JavaScript 1.7 bukan bagian dari standar ECMAScript.)
Ini adalah praktik yang baik untuk mengikat properti objek yang digunakan secara teratur ke variabel lokal karena lebih cepat daripada mencari seluruh rantai lingkup. (Lihat Mengoptimalkan JavaScript untuk kinerja ekstrem dan konsumsi memori rendah .)
Menentukan hal-hal dalam file, atau dalam `(function () {...}) ()`
Jika Anda tidak perlu menjangkau objek Anda di luar kode Anda, Anda dapat membungkus seluruh kode Anda dalam ekspresi fungsi - disebut pola modul. Ini memiliki keunggulan kinerja, dan juga memungkinkan kode Anda untuk diperkecil dan dikaburkan di tingkat tinggi. Anda juga dapat memastikan itu tidak akan mencemari namespace global. Fungsi Pembungkus dalam JavaScript juga memungkinkan Anda untuk menambahkan perilaku berorientasi aspek. Ben Cherry memiliki artikel mendalam tentang pola modul .
Menggunakan `ini` atau tidak
Jika Anda menggunakan warisan pseudo-klasik dalam JavaScript, Anda tidak dapat menghindari menggunakannya this
. Ini masalah selera pola pewarisan yang Anda gunakan. Untuk kasus lain, lihat artikel Peter Michaux tentang Widget JavaScript Tanpa "ini" .
Menggunakan `function myname ()` atau `myname = function ();`
function myname()
adalah deklarasi fungsi dan myname = function();
ekspresi fungsi yang ditugaskan ke variabel myname
. Bentuk terakhir menunjukkan bahwa fungsi adalah objek kelas satu, dan Anda bisa melakukan apa saja dengannya, seperti halnya variabel. Satu-satunya perbedaan di antara mereka adalah bahwa semua deklarasi fungsi diangkat ke atas lingkup, yang mungkin penting dalam kasus-kasus tertentu. Kalau tidak, mereka sama. function foo()
adalah bentuk steno. Rincian lebih lanjut tentang mengangkat dapat ditemukan di artikel Pelingkupan dan Mengangkat JavaScript .
Mendefinisikan metode dalam tubuh objek atau menggunakan "prototipe"
Terserah kamu. JavaScript memiliki empat pola pembuatan objek: pseudo-klasik, prototipe, fungsional, dan bagian ( Crockford, 2008 ). Masing-masing memiliki pro dan kontra, lihat Crockford dalam ceramah videonya atau dapatkan bukunya The Good Parts seperti yang disarankan Anon .
Kerangka kerja
Saya sarankan Anda mengambil beberapa kerangka kerja JavaScript, mempelajari konvensi dan gaya mereka, dan menemukan praktik dan pola yang paling cocok untuk Anda. Misalnya, Dojo Toolkit menyediakan kerangka kerja yang kuat untuk menulis kode JavaScript berorientasi objek yang bahkan mendukung banyak pewarisan.
Pola
Terakhir, ada sebuah blog yang didedikasikan untuk mengeksplorasi pola JavaScript umum dan anti-pola . Lihat juga pertanyaannya. Apakah ada standar pengkodean untuk JavaScript? di Stack Overflow.