gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 07:14:28 25 4
gpt4 key购买 nike

我的代码是这样的:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com