gpt4 book ai didi

javascript - 在这种情况下如何解决非法调用类型错误?

转载 作者:行者123 更新时间:2023-12-03 06:56:32 24 4
gpt4 key购买 nike

在解决编程挑战时,我编写了一个函数,该函数旨在将函数作为参数并返回一个函数。返回的函数旨在执行参数函数(传递给第一个函数)。该函数的代码:-

function func1(f){
let func2 = function(){
if(/*a condition based on a global variable*/){
f();
}
}
return func2;
}

这当前不起作用,并且会引发非法调用类型错误。我看到this问题,但我不知道如何将其答案与我的代码联系起来。所以,我的问题是:-

  • 为什么我的代码无法运行?
  • 我该怎么做才能让它发挥作用?


编辑

我正在调用这样的函数:-

var someFunc = func1(alert);
someFunc("foo");
someFunc("bar");

最佳答案

你需要处理

  • 函数调用的上下文
  • 论据
  • 返回值

这是一个实现:

function func1(f, context){
let func2 = function(){
if( some condition ){
return f.apply(context, arguments);
} // there probably should be some "else" behavior...
}
return func2;
}

一些示例用途:

var fun = func1(console.log, console);
fun("A", 25); // logs "A", 25
fun = func1(alert);
fun("foo"); // alerts "foo"

关于javascript - 在这种情况下如何解决非法调用类型错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37254466/

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