Почему сортировка массива срабатывает до его вызова?

Имеется массив объектов, а также кастомная функция для фильтрации его элементов по ключу(параметру функции)

let users = [
    { name: "John", age: 20, surname: "Johnson" },
    { name: "Pete", age: 18, surname: "Peterson" },
    { name: "Ann", age: 19, surname: "Hathaway" }
];

// *1* console.log(users) выдает отсортированный массив

function byField (str){
    return function (a,b){
        return (a[str] > b[str]) ? 1 : -1 ;
    }
}

users.sort(byField("name"));
// *2* console.log(users) выдает отсортированный массив

Вопрос: почему первый лог выводит уже отсортированный массив до вызова метода?


Ответы (1 шт):

Автор решения: Alexey Ten

Потому что console.log в браузере «ленивый» и показывает состояние объектов в момент разворачивания, а не момент вывода.

Сделайте, например, console.log(users.slice()) что бы вывести копию массива.

→ Ссылка