Почему запись массива в консоль до и после операции над ним показывает один и тот же результат в каждом случае


Например, я начинаю с:

        var currentHistory = ['t1', 't2', 't3', 't4', 't5'];
        console.log(currentHistory);

Затем я меняю элемент местами и снова регистрирую:

        var tmp = currentHistory[2];
        currentHistory[2] = currentHistory[0];
        currentHistory[0] = tmp;

        console.log(currentHistory);

Только для того, чтобы убедиться, что выходные данные одинаковы в каждом случае.

        Array[5] 't3', 't2', 't1', 't4', 't5'

        Array[5] 't3', 't2', 't1', 't4', 't5'
Эта непоследовательность в пространстве и времени свела меня с ума прошлой ночью, и я был бы признателен за ответ.
2 3

2 ответа:

Хороший вопрос! Попробуйте это:

console.log(currentHistory.slice(0));

Теперь заметьте, что большой шар из вибли-вибли, Тимей-вимей материала превратился в простую линию от А до В?

На самом деле это проблема с тем, как работает консоль. Когда вы регистрируете объект, некоторые браузеры (особенно Chrome) регистрируют ссылку на объект, чтобы вы могли свободно просматривать его. Однако, если объект меняется... это работает не так, как ожидалось.

Согласно Этот Ваш код работает нормально.

Im через Chrome версия 34.0.1847.131 м