Mengapa aaa = 1,2,3
berhasil dan menetapkan nilai aaa
menjadi 1
?
Mengapa tidak var bbb = 1,2,3
berhasil?
Mengapa var bbb = (1,2,3)
berhasil dan menetapkan nilai bbb
menjadi 3
?
javascript
syntax
Shankar Cabus
sumber
sumber
var a1,a2,a3;
hanya akan mendeklarasikan tiga variabel lokal.Jawaban:
Ada banyak hal yang terjadi di sini, tetapi pada dasarnya, ini tergantung pada operator koma .
Kode ini:
Setara dengan:
Jadi
aaa
secara implisit dideklarasikan dan diberi nilai 1. Perhatikan bahwa output pada konsol adalah hasil dari pernyataan terakhir, 3.Kode ini:
Merupakan kesalahan sintaks karena koma dalam deklarasi variabel digunakan untuk mendeklarasikan beberapa variabel dalam satu baris. Seperti yang ditunjukkan artikel MDN,
Jadi kode ini kira-kira sama dengan:
Tentu saja,
2
ini bukan pengenal yang valid, jadi gagal pada saat itu.Kode ini:
Sangat mirip dengan yang pertama, kecuali karena nilai numerik dibungkus dalam tanda kurung, nilai tersebut dievaluasi terlebih dahulu. Jadi ini secara kasar setara dengan:
sumber
=
invar bbb = 1;
tidak sama dengan=
inaaa = 1;
- mereka berasal dari produksi yang berbeda (Initialiser vs AssignmentExpression) dalam tata bahasa dan kebetulan menggunakan token yang sama.a = 1, 2, 3
dapat diberi tanda kurung sebagai(a = 1), 2, 3
yang mengevaluasi sebagaia = 1; 2; 3
(dan mengembalikan 3, misalnyab = (a = 1, 2, 3)
akan menetapkan 3 ke b). Sebaliknya,a = (1, 2, 3)
mengevaluasi sebagai1; 2; a = 3
dan mengembalikan 3.(1 + 2) * 3
,1 + 2
dievaluasi terlebih dahulu dan hasil dari ekspresi tersebut diganti kembali ke ekspresi luar untuk sisa evaluasi.Koma memiliki banyak kegunaan dalam Javascript. Dalam ekspresi:
itu adalah operator yang hanya mengembalikan argumen tangan kanannya. Tapi itu juga bagian dari sintaks
var
deklarasi, yaitu:(di mana
[...]
berarti bagian itu opsional).var
Deklarasi Anda kehilangan nama variabel setelah koma, jadi tidak dapat diurai. Anda bisa mendapatkan efek yang Anda inginkan dengan:Tanda kurung memaksa koma untuk diperlakukan sebagai operator daripada pembatas antara deklarasi variabel.
sumber
Dalam contoh Anda, koma digunakan dalam dua konteks:
var
pernyataanSintaks
var
pernyataannya adalah:Di sini, koma digunakan untuk memisahkan pasangan nama-nilai variabel. Berikut ini tidak akan berfungsi karena nama variabel tidak boleh dimulai dengan digit (lihat nama pengenal ):
Operator Koma
Operator koma mengevaluasi kedua operannya (dari kiri ke kanan) dan mengembalikan nilai dari operan kedua. Ekspresi berikut bekerja sebagai berikut:
aaa = 1, 2
hasil 2aaa = 1
dievaluasi terlebih dahulu karena=
memiliki prioritas lebih tinggi dari,
2, 3
hasil 3(1, 2, 3)
hasil ekspresi3
seperti yang dijelaskan di atasbbb
diberi nilai3
sumber
aaa = 1, 2, 3
=> Operator koma digunakan untuk memisahkan 3 pernyataan berikut:aaa=1
,2
dan3
. Hasil dari operator koma adalah nilai dari pernyataan terakhir 3. Namun, aaa diberi nilai 1, seperti yang dapat dilihat dengan jelas dari tangkapan layar OP. Alasannya adalah Operator Prioritas, dengan Operator Koma memiliki prioritas terendah.Dalam kasus pertama:
aaa = 1,2,3
koma berfungsi sebagai pemisah ekspresi. Ia melakukan tugas ke
aaa
, lalu menghitung2
dan membuangnya, lalu menghitung3
dan membuangnya.Detik:
Kata
var
kunci memberitahu compiler Javascript bahwa hal berikutnya setelah a,
harus menjadi nama variabel lain. Itu tidak ditemukan, jadi itu mati dan muntah.Di sini, kompilator pertama-tama mengevaluasi
1
dan mengabaikannya. Kemudian ia mengevaluasi2
dan mengabaikannya. Kemudian mengevaluasi3
dan yang tersisa di tumpukan sehingga ditugaskan kebbb
Meskipun tidak umum menggunakan koma untuk memisahkan ekspresi, ini terkadang berguna dalam hal-hal seperti
for
penampilan.sumber