Mengapakah [[]][ []] [ []] mengembalikan '10' dalam JavaScript?

Barbara Streisand
Lepaskan: 2024-11-17 15:09:02
asal
845 orang telah melayarinya

Why does   [[]][ []] [ []] return

Menyingkap Misteri Di Sebalik Nilai Pulangan [[]][ []] [ []]

Dalam bidang JavaScript, ungkapan yang penuh teka-teki [[]][ []] [ []] membingungkan ramai dengan nilai pulangannya yang kelihatan tidak masuk akal: "10". Menyelidiki kedalaman proses penilaian JavaScript, kami memulakan perjalanan untuk menguraikan teka-teki ini.

Pada mulanya, mari kita pecahkan ungkapan:

++[[]][+[]]
+
[+[]]
Salin selepas log masuk

Meluaskan [[]] [ []]

Dalam JavaScript, ungkapan [] menilai kepada 0. Ini kerana percubaan untuk menukar operan kepada nombor dan tatasusunan kosong memaksa kepada rentetan, yang kemudiannya ditukar kepada nombor yang menghasilkan 0.

Menggantikan [] dengan yang setara, kita mendapat:

++[[]][0]
+
[+[]]
Salin selepas log masuk

Menilai [[]][0]

Pengendali menambah operannya dengan satu, jadi [[]][0] adalah bersamaan dengan ([[]][0]) 1. Oleh kerana [[]][0] mendapatkan semula elemen pertama tatasusunan kosong, ia mengembalikan satu lagi tatasusunan kosong. Oleh itu, ([[]][0]) adalah bersamaan dengan [], yang kita tahu menghasilkan 0.

Memudahkan Ungkapan Selebihnya

Mempermudahkan lagi, kami memperoleh :

1
+
[+[]]
Salin selepas log masuk

Sihir Paksaan JavaScript

Peraturan paksaan JavaScript dimainkan apabila berurusan dengan penambahan tatasusunan dan nombor. Mula-mula, tatasusunan memaksa kepada rentetan ("0"), dan kemudian nombor itu memaksa kepada rentetan ("1"). Penggabungan rentetan menghasilkan hasil akhir:

console.log("1" + "0") // "10"
Salin selepas log masuk

Konteks Tambahan

  • Ungkapan [[]] boleh difahami sebagai cara singkat untuk memaksa tatasusunan kepada nombor (0).
  • Operasi [] tidak ditakrifkan secara eksplisit dalam spesifikasi JavaScript, tetapi ia adalah hasil daripada siri langkah paksaan.
  • Peraturan paksaan JavaScript boleh membawa kepada tingkah laku yang tidak dijangka dalam senario tertentu, tetapi ia menawarkan fleksibiliti dalam menukar nilai kepada jenis yang berbeza.

Atas ialah kandungan terperinci Mengapakah [[]][ []] [ []] mengembalikan '10' dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan