Dalam JavaScript, dimungkinkan untuk mendeklarasikan beberapa variabel seperti ini:
var variable1 = "Hello World!";
var variable2 = "Testing...";
var variable3 = 42;
... atau seperti ini:
var variable1 = "Hello World!",
variable2 = "Testing...",
variable3 = 42;
Apakah satu metode lebih baik / lebih cepat dari yang lain?
javascript
variables
coding-style
performance
declaration
Steve Harrison
sumber
sumber
Jawaban:
Cara pertama lebih mudah dipertahankan. Setiap deklarasi adalah pernyataan tunggal pada satu baris, sehingga Anda dapat dengan mudah menambahkan, menghapus, dan menyusun ulang deklarasi.
Dengan cara kedua, menjengkelkan untuk menghapus deklarasi pertama atau terakhir karena mengandung
var
kata kunci dan titik koma. Dan setiap kali Anda menambahkan deklarasi baru, Anda harus mengubah titik koma di baris lama menjadi koma.sumber
Selain rawatan, cara pertama menghilangkan kemungkinan penciptaan variabel global kecelakaan:
Sementara cara kedua kurang memaafkan:
sumber
var variable1 = "Hello World!", variable2 = "Testing...", variable3 = 42;
. Orang yang hilang,
akan jatuh, tetapi saya setuju itu berisikoPossible Fatal Error
jika saya kehilangan koma, hore for me!Adalah umum untuk menggunakan satu
var
pernyataan per ruang lingkup untuk organisasi. Cara semua "cakupan" mengikuti pola yang sama membuat kode lebih mudah dibaca. Selain itu, mesin "mengangkat" mereka semua ke atas pula. Jadi, menjaga deklarasi Anda bersama meniru apa yang sebenarnya akan terjadi lebih dekat.sumber
var
pernyataan itu. kebalikannya adalah benar. lihat dokumentasi dan contoh iniIni jauh lebih mudah dibaca ketika melakukannya dengan cara ini:
Tetapi membutuhkan lebih sedikit ruang dan baris kode dengan cara ini:
Ini bisa ideal untuk menghemat ruang, tetapi biarkan kompresor JavaScript menanganinya untuk Anda.
sumber
Mungkin seperti ini
Kecuali ketika mengubah variabel pertama atau terakhir mudah untuk mempertahankan dan membaca.
sumber
Ini hanya masalah preferensi pribadi. Tidak ada perbedaan antara kedua cara ini, selain beberapa byte yang disimpan dengan bentuk kedua jika Anda menghapus spasi.
sumber
ECMAScript6 memperkenalkan penugasan penghancuran yang bekerja cukup bagus:
[a, b] = [1, 2]
a
akan sama1
danb
akan sama2
.sumber
let [aVar, bVar, cVar, xVar, yVar, zVar] = [10, 20, 30, 40, 50];
Jadi, secara pribadi saya tidak merekomendasikannya.lebih mudah dibaca daripada:
Tetapi mereka melakukan hal yang sama.
sumber
var<space>
, itu<space><space><space><space>
var<space>
atauvar<tab>
vs<tab>
. Sebagian besar masih bisa diperdebatkan.Gunakan tugas Destrukturisasi ES6 : Ini akan membongkar nilai dari array, atau properti dari objek, ke dalam variabel yang berbeda.
sumber
Penggunaan saya satu-satunya, namun penting untuk koma adalah dalam for loop:
Saya pergi ke sini untuk mencari tahu apakah ini OK di JavaScript.
Sekalipun melihatnya bekerja, pertanyaan tetap ada apakah n lokal pada fungsi.
Ini memverifikasi, n adalah lokal:
Sejenak saya tidak yakin, beralih antar bahasa.
sumber
Meskipun keduanya valid, menggunakan kedua mencegah pengembang tidak berpengalaman dari menempatkan pernyataan var di semua tempat dan menyebabkan masalah mengangkat. Jika hanya ada satu var per fungsi, di bagian atas fungsi, maka lebih mudah untuk men-debug kode secara keseluruhan. Ini bisa berarti bahwa garis-garis di mana variabel-variabel dideklarasikan tidak sejelas yang diinginkan beberapa orang.
Saya merasa bahwa trade-off sepadan, jika itu berarti menyapih pengembang agar tidak menjatuhkan 'var' di mana pun mereka suka.
Orang-orang mungkin mengeluh tentang JSLint, saya juga melakukannya, tetapi banyak yang diarahkan bukan untuk memperbaiki masalah dengan bahasa, tetapi dalam memperbaiki kebiasaan buruk para pembuat kode dan karena itu mencegah masalah dalam kode yang mereka tulis. Karena itu:
"Dalam bahasa dengan cakupan blok, biasanya disarankan agar variabel dideklarasikan di situs penggunaan pertama. Tetapi karena JavaScript tidak memiliki cakupan blok, lebih bijaksana untuk mendeklarasikan semua variabel fungsi di bagian atas fungsi. Itu adalah merekomendasikan bahwa pernyataan var tunggal digunakan per fungsi. " - http://www.jslint.com/lint.html#scope
sumber
Saya pikir ini masalah preferensi pribadi. Saya lebih suka melakukannya dengan cara berikut:
sumber
Alasan lain untuk menghindari versi pernyataan tunggal (single var ) adalah debugging. Jika pengecualian dilemparkan ke salah satu garis penugasan, jejak tumpukan hanya menampilkan satu baris.
Jika Anda memiliki 10 variabel yang didefinisikan dengan sintaks koma, Anda tidak memiliki cara untuk mengetahui secara langsung yang mana pelakunya.
Versi pernyataan individual tidak menderita dari ambiguitas ini.
sumber
Konsep "Kohesi atas Kopling" dapat diterapkan lebih umum daripada hanya objek / modul / fungsi. Itu juga dapat melayani dalam situasi ini:
Contoh kedua OP yang disarankan telah menggabungkan semua variabel ke dalam pernyataan yang sama, yang membuatnya tidak mungkin untuk mengambil salah satu baris dan memindahkannya ke tempat lain tanpa merusak barang (high coupling). Contoh pertama yang dia berikan membuat penugasan variabel independen satu sama lain (kopling rendah).
"Kopling rendah sering merupakan tanda dari sistem komputer yang terstruktur dengan baik dan desain yang baik, dan ketika dikombinasikan dengan kohesi yang tinggi, mendukung tujuan umum keterbacaan dan pemeliharaan yang tinggi."
http://en.wikipedia.org/wiki/Coupling_(computer_programming)
Jadi pilih yang pertama.
sumber
Posting lama, saya tahu, tetapi untuk menambahkan detail perspektif kecil untuk sesama Google:
Masalah pemeliharaan dapat dengan mudah diatasi dengan sedikit format, seperti itu.
Saya menggunakan format ini secara ketat karena masalah preferensi pribadi. Saya melewatkan format ini untuk deklarasi tunggal, tentu saja, atau di mana hanya gusi up karya.
sumber
Saya percaya bahwa sebelum kita mulai menggunakan ES6, pendekatan dengan deklarasi var tunggal tidak baik atau buruk (kalau-kalau Anda memiliki linter dan
'use strict'
. Itu benar-benar preferensi rasa. Tapi sekarang hal-hal berubah untuk saya. Ada pikiran saya yang mendukung deklarasi multiline :Sekarang kami memiliki dua jenis variabel baru, dan
var
menjadi usang. Ini adalah praktik yang baik untuk digunakan diconst
mana saja sampai Anda benar-benar membutuhkannyalet
. Jadi cukup sering kode Anda akan berisi deklarasi variabel dengan asistensi di tengah kode, dan karena pelingkupan blok Anda cukup sering akan memindahkan variabel antar blok jika terjadi perubahan kecil. Saya pikir itu lebih nyaman untuk melakukan itu dengan deklarasi multiline.Sintaks ES6 menjadi lebih beragam, kami mendapat destruktor, string templat, fungsi panah, dan tugas opsional. Ketika Anda banyak menggunakan semua fitur itu dengan deklarasi var tunggal itu menyakitkan keterbacaan.
sumber
Saya pikir cara pertama (multi vars) adalah yang terbaik, karena Anda bisa berakhir dengan ini (dari aplikasi yang menggunakan Knockout), yang sulit dibaca menurut saya:
sumber