Javascript func.apply(这个,参数)在这段代码中对u.once()做了什么?
下面的函数underbar function被我的同行改写如下: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
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)