Saya tahu itu mungkin di PHP untuk memiliki variabel "variabel". Sebagai contoh
$x = "variable";
$$x = "hello, world!";
echo $variable; // displays "hello, world!"
Apakah mungkin untuk merujuk ke variabel dengan namanya sebagai string di javascript? Bagaimana melakukannya?
javascript
variables
variable-variables
ShoeLace 1291
sumber
sumber
Jawaban:
Tidak ada solusi tunggal untuk ini (yah, ada
eval
, tapi mari kita tidak mempertimbangkannya dengan serius). Dimungkinkan untuk mengakses beberapa variabel global secara dinamis melaluiwindow
, tetapi itu tidak berfungsi untuk variabel lokal ke suatu fungsi. Variabel global yang tidak menjadi propertiwindow
adalah variabel yang ditentukan denganlet
danconst
, danclass
es.Hampir selalu ada solusi yang lebih baik daripada menggunakan variabel variabel! Sebaliknya, Anda harus melihat struktur data dan memilih yang tepat untuk masalah Anda.
Jika Anda memiliki sekumpulan nama tetap, seperti
simpan nama / nilai tersebut sebagai properti dari suatu objek dan gunakan notasi braket untuk mencarinya secara dinamis:
Di ES2015 + bahkan lebih mudah melakukan ini untuk variabel yang ada menggunakan notasi properti ringkas :
Jika Anda memiliki variabel bernomor "berurutan", seperti
maka Anda harus menggunakan array dan cukup gunakan indeks untuk mengakses nilai yang sesuai:
sumber
Jika Anda sangat ingin melakukan ini, Anda dapat mencoba menggunakan eval ():
Atau menggunakan objek jendela:
http://www.hiteshagrawal.com/javascript/dynamic-variables-in-javascript
sumber
eval
tidak dapat membuat variabel lokal dalam mode ketat. Panggilan tidak langsung dapat membuat variabel global.Untuk mereferensikan variabel dalam javascript dengan hanya sebuah string, Anda dapat menggunakan
Anda dapat mengatur dan mereferensikan variabel, dan objek dalam variabel juga.
sumber
Tidak seperti PHP, JavaScript tidak menawarkan akses ke larik global (yang berisi referensi ke semua nama variabel yang saat ini dideklarasikan). Karena itu, JavaScript tidak menawarkan dukungan asli untuk variabel variabel. Namun, Anda dapat meniru fitur ini selama Anda mendefinisikan semua variabel Anda sebagai bagian dari larik atau objek. Ini pada gilirannya akan membuat array gloabls untuk Anda. Misalnya, daripada mendeklarasikan variabel
hello
dalam cakupan global seperti ini:mari kita merangkumnya di dalam sebuah objek. Kami akan memanggil objek itu vv (variabel variabel):
Sekarang kita dapat merujuk ke variabel dengan indeksnya, dan karena indeks array dapat disediakan menggunakan variabel, kita secara de facto menggunakan variabel variabel:
Jawaban atas Pertanyaan Anda
Mari terapkan ini ke kode yang Anda berikan di pertanyaan awal:
Penggunaan Praktis
Meskipun kode sebelumnya mungkin tampak sangat rumit dan tidak praktis, ada penggunaan praktis untuk variabel variabel di JavaScript menggunakan jenis enkapsulasi ini. Dalam contoh di bawah ini kami menggunakan konsep yang sama untuk mendapatkan ID dari sejumlah elemen HTML yang tidak ditentukan.
Contoh ini mendeklarasikan variabel variabel (key in
elementIds
) berdasarkan ID dari setiap elemen, dan akan menetapkan node dari elemen tersebut sebagai nilai dari setiap variabel. Dan karena menggunakan variabel global dalam JavaScript umumnya tidak disarankan untuk memberikan variabel variabel Anda ruang lingkup yang unik (dalam hal ini, mendeklarasikannya di dalamelementIds
array) tidak hanya rapi, tetapi juga lebih bertanggung jawab.sumber
Tentu saja bisa, tapi jangan. Variabel harus global.
sumber
sumber
Anda dapat menggunakan
eval(str)
fungsi JavaScript .Apa yang dilakukan fungsi ini adalah mengubah string yang diberikan menjadi kode JS, lalu menjalankannya.
Sebagai contoh:
Jadi untuk menggunakannya sebagai variabel variabel, Anda dapat melakukan hal berikut:
Ini akan menghasilkan keluaran yang sama persis dengan:
(Contoh diambil dari manual PHP tentang variabel variabel .)
sumber