我只是想知道是否有一种方法可以将函数x(...){...}的参数提取到全局范围中,并可能将它们存储到变量中。
我知道,如果您构造一个函数,则可以返回“参数”对象,但这不是我想要的,因为该函数是未知的。
为了说明为什么要这样做,我试图创建一个函数“ a”,该函数接收函数“ x”作为参数,并且我需要返回一个函数“ y”,当调用,将检查它是否已经计算了给定参数的结果,并在可能的情况下返回该值。
我知道这可能不是完成它的最佳方法。
最佳答案
我在猜测您到底想做什么,但这是一个结构性想法。这将创建一个缓存其结果的函数,因此对于给定的输入参数,结果只会被计算一次(然后再从缓存中检索)。它假定函数的参数是字符串或具有唯一toString()
转换的任何其他内容。
var myFunc = (function() {
var cache = {}, has = Object.prototype.hasOwnProperty;
return function(arg) {
if (has.call(cache, arg)) {
return cache[arg];
} else {
// do your calculation on arg to generate result
// ...
cache[arg] = result;
return result;
}
}
})();
此实现针对具有单个参数的函数进行了优化,但是如果您要基于多个参数进行缓存,则可以通过基于所有参数的组合构造一个唯一的键并基于该键进行缓存来对此进行扩展。
关于javascript - 将函数的参数提取到全局范围(javaScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30316817/