我希望将函数引用“go”传递到另一个名为“redefineFunction”的函数中,并在“redefineFunction”内重新定义“go”。根据Johnathan Snook的说法,函数是按引用传递的,因此我不明白为什么当我将其传递到redefineFunction()中时,go()没有被重新定义。我是否遗漏了什么?
// redefineFunction() will take a function reference and
// reassign it to a new function
function redefineFunction(fn) {
fn = function(x) { return x * 3; };
}
// initial version of go()
function go(x) {
return x;
}
go(5); // returns 5
// redefine go()
go = function(x) {
return x * 2;
}
go(5); // returns 10
// redefine go() using redefineFunction()
redefineFunction(go);
go(5); // still returns 10, I want it to return 15
或者查看我的fiddle http://jsfiddle.net/q9Kft/