Baru-baru ini saya membaca "Panduan Definitif untuk JavaScript (Edisi Ke-6)", diterjemahkan oleh pasukan Taobao. Lihat bab tentang tatasusunan untuk memperkenalkan beberapa kaedah tatasusunan JS.
pop() push() merawat tatasusunan sebagai tindanan, dan kemudian memadam dan menambah elemen tatasusunan pada penghujung tatasusunan.
unshift() shift() juga menganggap tatasusunan sebagai tindanan, tetapi ia memadam dan menambah elemen di kepala tatasusunan.
Keempat-empat kaedah akan mengemas kini panjang tatasusunan.
Tetapi berkenaan nilai pulangan yang dinyatakan, saya agak keliru selepas melihat contoh yang diberikan.
Contoh kod dari buku:
var statck=[]; //stack:[]
stack.push(1,2); //stack:[1,2] 返回2
stack.pop(); //stack:[1] 返回2
stack.push(3); //stack:[1,3] 返回2
stack.pop(); //stack:[1] 返回3
stack.push([4,5]); //stack:[1,[4,5]] 返回2
stack.pop(); //stack:[1] 返回[4,5]
stack.pop(); // stack:[] 返回1
Nilai pulangan hendaklah nilai yang dipadamkan atau disisipkan pada masa ini
Nilai terakhir yang dimasukkan dalam baris kedua ialah 2, jadi nilai pulangan ialah 2.
Jadi mengapa terdapat nilai pulangan 2 dalam baris ke-4 kod di atas ? Bukankah itu nilai 3? Sebab nilai yang dimasukkan ialah 3.
stack.push(3); //stack:[1,3] 返回2
Kemudian baris 6 juga tidak memahami nilai pulangan seterusnya:
stack.push([4,5]); //stack:[1,[4,5]] 返回2
Mengapa nilai yang dikembalikan 2 bukannya 5?
即:
push()
和unshift()
会返回新数组的长度,而pop()
和shift()
会返回被移除的元素(当数组为空时返回undefined
)来源:MDN
1, pusn mengembalikan panjang tatasusunan.
2, pop, mengembalikan elemen yang dipadamkan.
3, nyahshift, mengembalikan panjang tatasusunan.
4, shift mengembalikan elemen yang dipadamkan.