Допустим, у меня есть эти две функции:
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
взято из.