Javascript - 在更改函数之前保留对函数的引用

标签 javascript function reference

我的代码是这样的:

function x(a,b)
{
     return a + b;
}

var f = x;

function x(a,b)
{
     return a - b;
}

var res = f(2,1);

我希望结果是 3,因为 f 在修改它之前指向函数 x,但事实并非如此,我如何保留对即将被重新定义的函数的引用?

最佳答案

函数声明在表达式之前处理。因此,从解释器的 Angular 来看,您的代码被解释为:

function x(a,b)
{
     return a + b;
}

function x(a,b)
{
     return a - b;
}

var f = x;

var res = f(2,1);

解决方案是使用函数表达式而不是函数声明来重新分配函数。这是因为正如我上面提到的,表达式是在声明之后处理的:

function x(a,b)
{
     return a + b;
}

var f = x;

x = function (a,b) // <--------- this fixes your problem
{
     return a - b;
}

var res = f(2,1);

请注意,由于声明在表达式之前处理,因此以下内容也适用:

var f = x;

x = function (a,b)
{
     return a - b;
}

var res = f(2,1);

function x(a,b) // this is processed first
{
     return a + b;
}

关于Javascript - 在更改函数之前保留对函数的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32767497/

相关文章:

javascript - getByteFrequencyData 不适用于 Safari 中的实时流

javascript - Youtube API 嵌入静音视频不执行 javascript - 为什么它在 jsfiddle 上工作而不是在 html 文件中工作?

javascript - javascript 中的对象 null 和 { } 行为

python - 对 python 中已删除对象的引用

C++返回对临时的引用

javascript - 如何访问和隐藏由 loadGeoJson() 创建的标记?

javascript - 如何在 Javascript 中获取 DOM 文档的格式正确的 XML?

PHP计算财政年度

linux - 使用 nohup 调用函数

javascript - 保存对内置方法的引用的好处