Пердача функции по ссылке. Где подвох?
Всем привет!
К примеру, есть такой код: function message (msg) { alert(msg); } var newMessage = message; message = null; newMessage("Hello!"); К сожалению не нашел как тут вставить код, что бы посетители могли его запустить, но не в этом суть. Прошу объясните на пальцах такое поведение. Известно, что функции передаются по ссылке (поскольку они суть объекты). В данном случае идентификаторы message и newMessage это просто указатели на одну и ту же функцию. Почему когда я затираю один указатель (message = null) функция все еще доступна по второму указателю. Ведь по идее если я изменяю один указаетель, это должно отражаться и на всех остальных указателях. Но, по-моему я это не правильно понимаю... А что тут происходит на самом деле ? :help: |
Nubi,
когда вы пишите message = null; вы затираете лишь ссылку на функцию у этой переменной, а другая до сих пор ссылается на функцию пример: function message (msg) {//в переменной message ссылка на эту функцию alert(msg); } var newMessage = message; // у переменной newMessage ссылка на функцию, а не ссылка на ссылку переменной message message = null;//затираем ссылку в переменной message newMessage("Hello!");//а переменная newMessage до сих пор ссылается на функцию, а не ссылку переменной message |
Dim@,
Спасибо, теперь понятно ;) |
Часовой пояс GMT +3, время: 11:43. |