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:
++[[]][+[]] + [+[]]
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] + [+[]]
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 + [+[]]
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"
Konteks Tambahan
Atas ialah kandungan terperinci Mengapakah [[]][ []] [ []] mengembalikan '10' dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!