我想将函数引用“go”传递给另一个函数“redefineFunction”,并在“redefineFunction”中重新定义“go”。根据 Johnathan Snook 的说法,函数是通过引用传递的,所以我不明白为什么当我将 go() 传递给 redefineFunction() 时不会重新定义它。有什么我想念的吗?
// 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
或者看我的小提琴http://jsfiddle.net/q9Kft/