Проблема в том, что я не понимаю, почему этот код работает.Это работает, но я просто не могу сосредоточиться на этом.Вот функция, которая удаляет узел из односвязного списка.Я чувствую, что это не должно работать, потому что это на самом деле не меняет ни один из элементов в списке, я просто изменяю значение переменной, которую я установил равной чему-то в списке.Другими словами, когда я создаю переменную «runner» для итерации по списку, почему изменения, которые я делаю в «runner», фактически меняют сам список.Аналогично, если я сделаю
var x = 1
var y = x
y = 2
Очевидно, что x все равно будет равен 1. Почему это не так для моего «бегуна» из связанного списка.В функции deleteNode, приведенной ниже, почему изменение значения runner.next на самом деле изменяет что-либо в узле или списке, которые существуют вне функции?
function deleteNode(head, position) {
var runner = head
var counter = 0
while (runner) {
if (counter == position - 1) {
runner.next = runner.next.next
return head;
}
runner = runner.next
counter++
}
}