Rumah >hujung hadapan web >tutorial js >Beberapa tingkah laku aneh petua JavaScript arrays_javascript
Kepentingan tatasusunan dalam bahasa pengaturcaraan terbukti dengan sendirinya. Tatasusunan dalam JavaScript juga merupakan salah satu objek yang paling biasa digunakan . Tidak seperti tatasusunan dalam bahasa peringkat tinggi yang ditaip kuat seperti Java, yang hanya boleh menyimpan unsur jenis yang sama atau subjenisnya, JavaScript boleh menyimpan pelbagai jenis elemen dalam tatasusunan yang sama, dan panjangnya juga boleh dilaraskan secara dinamik, apabila data bertambah atau Kurangkan perubahan automatik kepada panjang tatasusunan.
Hari ini, saya menyemak tatasusunan JavaScript, dan kemudian meringkaskan beberapa tingkah laku peliknya, saya akan berkongsi dengan anda di sini.
Pelik 1: Fungsi pembina Array() boleh dipanggil tanpa menggunakan kata kunci baharu:
Pembina Array() menggunakan parameter yang dihantar kepadanya sebagai elemen tatasusunan untuk mencipta tatasusunan Secara amnya, kami memanggilnya seperti berikut:
var a = new Array(1, 2, "bom!"); a.length; //3 console.log(a); //[1, 2, "bom!"]
Walau bagaimanapun, adalah mungkin juga untuk meninggalkan yang baharu, seperti berikut:
var a = Array(1, 2, "bom!"); a.length; //3 console.log(a); //[1, 2, "bom!"]
Walaupun saya tidak tahu apakah mekanisme pelaksanaan dalamannya, saya rasa fungsi pembinanya boleh ditakrifkan seperti berikut:
function Array(args) { //如果,this不是Array的实例的话, //说明不是通过new调用的,则在这里再重新调用 if( !this instanceof Array) { return new Array(args); }//后面是正常调用时的实现代码<br />//...<br />}
Pelik 2: Apabila hanya satu parameter dihantar kepada pembina, tingkah laku tidak dapat diramalkan
Jika hanya satu parameter diluluskan, dan parameter ini ialah integer, tatasusunan akan diperoleh dan panjangnya adalah sama dengan parameter ini
var a = new Array(12); console.log(a.length); //12 console.log(a); //[]
Jika anda hanya melepasi nombor titik terapung, ralat akan dilaporkan:
var a = new Array(1.1); //Uncaught RangeError: Invalid array length(…)
Melalui rentetan akan berfungsi dengan baik, dengan rentetan sebagai elemen pertama tatasusunan:
var a = new Array("1.1"); console.log(a.length); // console.log(a); //["1.1"]
Tetapi untuk mengelakkan kekaburan, saya cadangkan yang terbaik adalah untuk mencipta tatasusunan secara langsung dalam bentuk literal:
var a = []; //空数组 var a = [1, 1, "bom"]; //三个元素 var a = [12]; //一个元素,并且元素是12
Pelik 3: Atribut panjang tatasusunan boleh diubah suai (boleh ditulis)
Seperti berikut, kami terus menukar panjang daripada 2 kepada 100, dan pengubahsuaian itu berjaya! ! !
var a = [1, 2, 3, 4]; console.log(a.length); //4 a.length = 100; console.log(a.length); //100
Walaupun panjang bersamaan dengan 100, unsur a[4]-a[99] tidak wujud dan jika anda meminta nilainya, sebagai contoh, lakukannya dalam gelung dari 0 hingga a.panjang, maka akan menjadi tidak ditentukan .
Tonton seterusnya:
var a = [1, 2, 3, 4]; a.length = 100; console.log(a[10]); //undefined console.log(99 in a); //false
Agak serupa dengan contoh di bawah:
var a = [1, 2, 3, 4]; a[99] = undefined; console.log(a.length); //100
Perbezaannya ialah a[99] di sini wujud kerana kami menciptanya, walaupun ia mempunyai nilai yang tidak ditentukan. Tetapi semua elemen daripada a[4] hingga a[98] tidak wujud, seperti berikut:
var a = [1, 2, 3, 4]; a[99] = undefined; console.log(99 in a); //true; console.log(98 in a); //false console.log(a.length); //100
Perkara di atas telah berkongsi dengan anda beberapa kelakuan aneh tatasusunan JavaScript Harap maafkan saya jika artikel itu tidak ditulis dengan baik, terima kasih!