Saat membaca dokumentasi online, saya bingung bagaimana cara mendefinisikan beberapa variabel JavaScript dengan benar dalam satu baris.
Jika saya ingin menyingkat kode berikut, apa cara JavaScript "ketat" yang tepat untuk mendefinisikan beberapa variabel javascript dalam satu baris?
var a = 0;
var b = 0;
Apakah itu:
var a = b = 0;
atau
var a = var b = 0;
dll ...
javascript
HeatherK
sumber
sumber
var $cls = my.namespace.Foo = function(args){ ... }
Jawaban:
Anda ingin mengandalkan koma karena jika Anda mengandalkan konstruksi tugas ganda, Anda akan gagal pada satu titik atau lainnya.
Contohnya adalah:
Mereka semua merujuk ke objek yang sama dalam memori, mereka tidak "unik" karena setiap kali Anda membuat referensi ke suatu objek (array, literal objek, fungsi), referensi itu diteruskan oleh referensi dan bukan nilai. Jadi jika Anda mengubah hanya satu dari variabel itu, dan ingin mereka bertindak secara individual, Anda tidak akan mendapatkan apa yang Anda inginkan karena mereka bukan objek individual.
Ada juga kerugian dalam beberapa penetapan, yaitu variabel sekunder menjadi global, dan Anda tidak ingin bocor ke namespace global.
Yang terbaik adalah menggunakan koma dan lebih disukai dengan banyak spasi agar dapat dibaca:
sumber
ReferenceError
pengecualian ... IMO, tugas tersebut harus dihindari ...Dengan menggunakan es6 atau node Javascript, Anda dapat melakukan hal berikut:
Dan jika Anda ingin dengan mudah mencetak banyak variabel dalam satu baris, lakukan ini:
Ini mirip dengan jawaban @alex grey di sini, tetapi contoh ini ada dalam Javascript dan bukan CoffeeScript.
Perhatikan bahwa ini menggunakan tugas penghancuran array Javascript
sumber
console.log(a,b,c,d)
dalam kasus ini saja? itu lebih pendek dan memberikan hasil yang samaTidak ada cara untuk melakukannya dalam satu baris dengan tugas sebagai nilai.
membuat b global. Cara yang benar (tanpa membocorkan variabel) adalah sedikit lebih lama:
yang berguna dalam kasus:
sumber
Mengapa tidak melakukannya dalam dua baris?
Alasannya, adalah untuk mempertahankan cakupan lokal pada deklarasi variabel, seperti ini:
akan mengarah ke deklarasi implisit
b
,c
dand
pada lingkup jendela.sumber
Berikut adalah metode ES6 baru untuk mendeklarasikan beberapa variabel dalam satu baris:
* Nama variabel dan indeks objek Anda harus sama
sumber
let { a, b } = { a: 0, b: 0 }
.Khusus untuk apa yang diminta OP, jika Anda ingin menginisialisasi N variabel dengan nilai yang sama (misalnya
0
), Anda dapat menggunakan array destructuring dan Array.fill untuk menetapkan ke variabel array N0
s:sumber
perhatikan Anda hanya dapat melakukan ini dengan Angka dan String
kamu bisa melakukan ...
sumber