Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在函数声明中使用下划线的u.throttle_Javascript_Underscore.js - Fatal编程技术网

Javascript 在函数声明中使用下划线的u.throttle

Javascript 在函数声明中使用下划线的u.throttle,javascript,underscore.js,Javascript,Underscore.js,我很好奇为什么在函数声明中用u.throttle包装函数不起作用。此函数表达式的行为符合预期: var myFunc = _.throttle(function(){ console.log("I'm throttling"); }, 1000); 但这并不是: function myFunc(){ return _.throttle(function(){console.log("I'm throttling");}, 1000); } 任何洞察都将不胜感激。将返回当前函数的

我很好奇为什么在函数声明中用u.throttle包装函数不起作用。此函数表达式的行为符合预期:

var myFunc = _.throttle(function(){
   console.log("I'm throttling");
}, 1000);
但这并不是:

function myFunc(){
    return _.throttle(function(){console.log("I'm throttling");}, 1000);
}
任何洞察都将不胜感激。

将返回当前函数的限制版本。在第一种情况下,您正在调用u.throttle,并获得throttled函数对象。所以,当你这么做的时候

myFunc();
它调用您的实际函数。但在第二种情况下,您将从myFunc函数返回节流函数。因此,在调用myFunc之前,\ throttle将根本不会被调用。您必须调用外部函数以获得限制版本,然后调用该函数以获得预期的结果

myFunc()();
正如idbehold在注释中指出的,您应该将myFunc的结果存储在一个变量中,然后在后续调用中使用它,如下所示

var throttledVersion = myFunc();
throttledVersion();
throttledVersion();
...
但首选第一个版本。

将返回当前函数的限制版本。在第一种情况下,您正在调用u.throttle,并获得throttled函数对象。所以,当你这么做的时候

myFunc();
它调用您的实际函数。但在第二种情况下,您将从myFunc函数返回节流函数。因此,在调用myFunc之前,\ throttle将根本不会被调用。您必须调用外部函数以获得限制版本,然后调用该函数以获得预期的结果

myFunc()();
正如idbehold在注释中指出的,您应该将myFunc的结果存储在一个变量中,然后在后续调用中使用它,如下所示

var throttledVersion = myFunc();
throttledVersion();
throttledVersion();
...
但是我更喜欢第一个版本