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:對不起,我無法理解。儘管如此,這聽起來像是一個新問題。如果是這樣,發佈一個新問題。 :-) –