Kes Penasaran "nama" dalam Objek JavaScript
Apabila bekerja dengan objek JavaScript, seseorang mungkin menghadapi tingkah laku yang tidak dijangka apabila menggunakan global pembolehubah bernama "nama." Pembolehubah ini mempunyai kepentingan unik dalam konteks yang berbeza.
Pertimbangkan coretan kod berikut:
var name = {}; name.FirstName = 'Tom'; alert(name.FirstName); alert(name); // Weird value
Dalam Chrome, alert(name.FirstName) mengembalikan tidak ditentukan, sementara ia berfungsi seperti yang diharapkan dalam IE dan Firefox. Selain itu, alert(name) menghasilkan nilai pelik, menimbulkan persoalan tentang kelakuannya.
Punca isu ini terletak pada peranan khas sifat "nama" dalam skop global JavaScript. Sifat window.name bertujuan untuk menjadi rentetan, mewakili nama tetingkap atau bingkai semasa. Apabila mencipta pembolehubah global bernama "nama", ia secara tersirat menetapkan window.name kepada rentetan, pada asasnya menimpa nilai khas.
Seterusnya, apabila cuba mengakses nama.FirstName, ia cuba mendapatkan semula sifat daripada primitif (rentetan) dan bukannya objek, mengakibatkan tidak ditentukan. Tingkah laku ini khusus untuk Chrome, yang menguatkuasakan tujuan window.name yang dimaksudkan dengan menghantar pembolehubah "nama" global kepada rentetan.
Untuk mengelakkan isu ini, elakkan daripada menggunakan "nama" sebagai pembolehubah global, kerana ia boleh membawa kepada hasil yang tidak dijangka. Dengan mengelakkan pembolehubah ini, anda boleh memastikan bahawa kod anda berkelakuan secara konsisten merentas penyemak imbas yang berbeza.
Atas ialah kandungan terperinci Mengapakah Menggunakan Pembolehubah Global Bernama 'nama' dalam JavaScript Menyebabkan Gelagat Tidak Dijangka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!