Javascript: Переназначение функции другой функции

Допустим, у меня есть эти две функции:

function fnChanger(fn) {
    fn = function() { sys.print('Changed!'); }
}
function foo() {
    sys.print('Unchanged');
}

Теперь, если я вызываю foo () , я вижу Без изменений , как и ожидалось. Однако, если я сначала позвоню fnChanger , я все равно вижу Unchanged :

fnChanger(foo);
foo(); //Unchanged

Теперь я предполагаю, что это потому, что foo не передается в fnChanger по ссылке, но я могу ошибаться.

Почему fnChanger не изменяет foo на печать Изменено! ?
Кроме того, как я могу заставить fnChanger изменить foo без излишнего запутанного синтаксиса?

PS: Я использую node.js для тестирования всего этого, так что именно здесь sys.print взято из.

6
задан Austin Hyde 26 October 2010 в 00:25
поделиться