Rumah > hujung hadapan web > tutorial js > Mengapakah ' [[]][ []] [ []]' sama dengan 10 dalam JavaScript?

Mengapakah ' [[]][ []] [ []]' sama dengan 10 dalam JavaScript?

Barbara Streisand
Lepaskan: 2024-11-15 10:29:02
asal
704 orang telah melayarinya

Why does

Meneroka Enigma " [[]][ []] [ []]" dalam JavaScript

Pembangun JavaScript mungkin mendapati diri mereka buntu dengan ungkapan " [[]][ []] [ []]" kerana ia menghasilkan hasil yang tidak dijangka daripada "10". Mari kita mendalami proses di sebalik pengiraan yang penuh teka-teki ini untuk merungkai selok-beloknya.

Memecahkannya

Jika kita memecahkan ungkapan, ia berbunyi seperti berikut:

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

Dalam JavaScript, elemen tatasusunan boleh dipaksa menjadi nombor menggunakan operator ' '. Khususnya, [] === 0. Ini memaksa tatasusunan menjadi rentetan kosong, menghasilkan "" === 0.

Memudahkan Pengiraan

Dengan pemahaman ini, kita boleh memudahkan ungkapan sebagai:

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

Mengakses elemen pertama tatasusunan, [[]][0], mengembalikan tatasusunan dalam. Disebabkan rujukan, kami akan merujuknya sebagai A untuk mengelakkan kekeliruan.

Menambah dan Menukar

Pengendali menambah operannya dengan satu dan mengembalikan hasil yang ditambah. Oleh itu, [[]][0] adalah bersamaan dengan Nombor(A) 1.

Penggabungan Rentetan

Kita boleh memudahkan lagi:

(+[] + 1)
+
[0]
Salin selepas log masuk

Pertama, [] dipaksa ke dalam rentetan "0". Kemudian, [] menghasilkan 1. Akhir sekali, "1" digabungkan dengan "0" menggunakan , kerana tatasusunan boleh digabungkan dengan , menghasilkan 10.

Teknikal

Di sebalik tabir, proses memaksa [] menjadi 0 melibatkan beberapa rujukan spesifikasi:

  • Operator Unari: Menukar operannya kepada nombor, memaksanya menjadi rentetan (" ") dahulu.
  • Penukaran Nombor (ToNumber()): Memaksa tatasusunan ([]) menjadi rentetan ("").
  • Nilai Primitif Penukaran (ToPrimitive()): Dalam mod String, gunakan kaedah [[DefaultValue]] objek.
  • [[DefaultValue]]: Memanggil kaedah [[Get]] dengan hujah "toString".
  • Kaedah toString Array: Menggunakan kaedah [[Join]], yang menghasilkan "" untuk [].

Kesimpulan

Melalui analisis langkah demi langkah ini, kami telah menjelaskan mekanik di sebalik ungkapan membingungkan " [[]][ []] [ []]" dalam JavaScript. Pelaksanaannya melibatkan paksaan, penambahan dan penggabungan, akhirnya mendedahkan perjalanan logik yang membawa kepada keputusan mengejutkan "10".

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

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