Lo vedi perché l'indice è una stringa; il 15° elemento che aggiungi ha l'indice '15', non il numero 15; e con il confronto di stringhe '9' è maggiore di '15'. Quindi, last
mostra la stringa più alta valore, che è ancora '9'. Come dice @Koen, questo è il comportamento documentato
:
dove "più alto" e "più basso" si basano su confronto di stringhe .
Questo non ha nulla a che fare con quanti molti elementi ci sono (che è chiaramente 15); è solo il comportamento del valore dell'indice ad essere interessato.
Se hai più elementi, vedrai l'last
il valore cambia quando si passa 89, poiché '90' è un valore maggiore di '9' e '91' è maggiore di '90'; ma quando superi 99 resta lì fino a quando arrivi a 900. E così via.