gpt4 book ai didi

javascript - 作为参数传递时函数不起作用

转载 作者:行者123 更新时间:2023-11-30 21:01:37 45 4
gpt4 key购买 nike

<分区>

我有这样的代码:

function doStuff(args) {
// do stuff
globalFunction(foo);
}

我想通过将全局函数作为参数传入来重构我的代码,这样如果全局函数发生变化,我可以只更改传递给我的函数的内容:

function doStuff(args, fn) {
// do stuff
fn(foo);
}

但是由于某些奇怪的原因,该函数现在的行为有所不同,并且我在其中某处遇到了错误。我什至这样做是为了仔细检查我是否正确传递了它:

function doStuff(args, fn) {
// do stuff
console.log(globalFunction === fn); // true
fn(foo);
}

所以我肯定知道这是正确的功能。我真的很困惑。有人可以告诉我发生了什么事吗?

编辑:这变得更奇怪了。我现在有这个:

function doStuff(args) {
// do stuff
globalFunction(foo); // works
const fn = globalFunction;
fn(foo); // doesn't work (???)
}

也许是这个函数特有的东西。基本上,这个函数在一个类中,并且在它的主体中有对 this 的引用。当我正常运行代码时它很好,但是当我从分配的变量运行它时,我得到一个错误,其中 this 是未定义的。我会发布整个代码,但它是一个庞大的外部库的一部分,所以我会尽力对其进行总结。

编辑 2:

我想我已经解决了这个问题。如果我有这样的代码

class foo {
a() {
console.log(this);
}
}

然后 const bar = new foo(); bar.a(); 记录 foo。但是,如果我执行 const fn = bar.a 然后调用 bar.a(),我将得到 undefined。为什么会这样?

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