Estás viendo eso porque el índice es una cadena; el decimoquinto elemento que agrega tiene el índice '15', no el número 15; y con la comparación de cadenas '9' es mayor que '15'. Entonces, last
está mostrando la cadena más alta valor, que sigue siendo '9'. Como dice @Koen, esto es el comportamiento documentado
:
donde 'más alto' y 'más bajo' se basan en comparación de cadenas .
Eso no tiene nada que ver con la cantidad de elementos que hay (que claramente son 15); solo se ve afectado el comportamiento del valor del índice.
Si tiene más elementos, verá el last
el valor cambia cuando pasa 89, ya que '90' es un valor más alto que '9' y '91' es más alto que '90'; pero cuando pasas 99 se queda allí hasta llegar a 900. Y así sucesivamente.