Javascript:检查函数本身的相等性,而不是返回值

Javascript: Checking equality of the functions themselves, not return values

本文关键字:返回值 检查 函数 Javascript      更新时间:2023-09-26

我想将一个函数作为属性传递给另一个函数。然后,我想测试该函数是否等于特定函数:

function f(func) {
    if (func === testFunc) {
        console.log("They're the same!")
    }
}
function testFunc(x) {
   return x+1
}
f(testFunc)

以上工作按预期。top 函数中的条件通过,行输出到控制台。但是,如果我使用自己的属性传递函数,则发现它不相等:

f(testFunc(2))

我认为这是因为返回值不同。那么如何测试实际函数是否相同,而不是它们的返回值呢?有办法吗?

如果要检查,如果 2 个对象的内容相同,则需要使用 uneval 函数。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/uneval

请记住,这比 eval 更糟糕,因此请尽可能避免它。