3

我处于需要“更新”另一个javascript文件中存在的函数的位置。该文件如下所示:

function jf(){
    alert('1');
}

//call jf periodically
 jf();   

之后加载的第二个 js 文件如下所示:

console.log(jf);
console.log(window.jf);
var func=function(){
  alert('2');  
};
jf=func;
window.jf=func;

第一个日志成功返回原始 jf 方法,第二个没有。第一组好像设置了局部变量jf,第二组基本什么都不做。有没有办法实现这个功能?

4

2 回答 2

2

根据Javascript 闭包 - 全局范围内覆盖函数的行为

var done =function done做基本相同的事情。它们将在内部范围内隐藏外部定义,但不会在外部范围内替换它。

这意味着您只能覆盖您function jf()是否处于同一执行上下文中的初始定义。否则,替换function jf(){ ...window.jf = function(){...

此外,在检查器控制台中运行测试可能会有所帮助。

于 2012-07-11T04:17:14.820 回答
1

首先,使用变量:

var jf = function () {
    alert('1');
};

jf();

然后第二位应该可以正常工作:

var func = function () {
    alert('2');
};

jf = func;
jf();
于 2012-07-11T04:07:49.613 回答