1
我最近从page阅读了与JavaScript相关的教程,我尝试了一些代码,但是我不明白一些逻辑。以下是作者代码。关于JavaScript数组原型
函数本身:
var lz="";
lz.memo = function (fn) {
var cache = {};
return function() {
var key = [].join.call(arguments, '§') + '§';
if (key in cache) {
return cache[key]; }
return cache[key] = fn.apply(this, arguments);
};
};
及其执行
var foo = 1;
function bar(baz) {
return baz + foo;
}
var cached = lz.memo(bar);
console.log(cached(1));
foo += 1;
console.log(cached(1)); //2
但是,如果我改变
var key = [].join.call(arguments, '§') + '§';
到
var key=arguments[0];
它也可以工作(缓存工程)。这里作者使用的目的是什么
var key = [].join.call(arguments, '§') + '§';
感谢关注!这里是CODEPEN of code
非常感谢你 –
这里foo变量被定义为全局变量。如果我在关键变量旁边定义foo,函数会抛出未定义的foo变量。如何初始化和分配foo变量的下一个键,使函数可以添加? –
@AzerQurbanov:对不起,我无法理解。尽管如此,这听起来像是一个新问题。如果是这样,发布一个新问题。 :-) –