Javascript func.apply(这个,参数)在这段代码中对u.once()做了什么?

Javascript func.apply(这个,参数)在这段代码中对u.once()做了什么?,javascript,Javascript,下面的函数underbar function被我的同行改写如下: var once = function(func) { var alreadyCalled = false; var result; return function() { if (!alreadyCalled) { result = func.apply(this, arguments); already

下面的函数underbar function被我的同行改写如下:

    var once = function(func) {
        var alreadyCalled = false;
        var result;

        return function() {
          if (!alreadyCalled) {
            result = func.apply(this, arguments);
            alreadyCalled = true;
          }
        return result
        };
      };
我是这样解释的。它是一个接受另一个函数并返回另一个函数的函数。如果
alreadyCalled
false
则设置
result=func.apply(此参数)


有人能帮我简单地理解一下
func.apply(这个,参数)
在这个函数的上下文中做了什么吗。我好像不明白

每个函数上都有两个隐式参数:
参数

函数对象上的
apply
方法允许您在显式设置这些参数的情况下调用它


因此,这里将发生的是,您得到一个封装另一个函数的函数,当您调用它时,它将把参数传递给原始函数。它还将跟踪它是否被调用及其结果。

从中删除异步等待

React.useEffect(async () => { await something},[]);
然后它就可以工作了,只需删除异步等待

React.useEffect(() => { something},[]);

我知道你的代码是不同的,但我遇到了同样的问题,我从useEffect中使用的所有项目中删除了async,我再也看不到错误了

store
this
在variable previous return function中…为什么这个
var once=function(func){var result=func.apply(这是参数);return result;};addTwo=函数(x){返回x+2};一次(加两(2))
返回TypeError:func.apply不是一个函数您需要像这样调用它
one(addTwo)(2)
,否则您没有将函数传递给
one
,您将传入
4
,或者更好地将对新函数的引用保存在变量
var addtwonence=one(addtwone)
上,然后
addtwonence(2)