0
我想緩存APP.findUrlParameter()中變量「url」的結果。當第二次執行該函數時,url不應該被定義,但不幸的是。Javascript:關閉內緩存不起作用
例如URL:mypage.com?test=123 &名稱=湯姆
(function() {
var APP = {
urlParameterPairs: function() {
var url;
if (window.location.search) {
url = window.location.search;
url = url.substring(1).split('&');
$.each(url, function (i) {
url[i] = url[i].split('=');
});
}
return url;
},
findUrlParameter: function (key) {
var url; // <---- to be cached !
console.log(url);
return (function() {
var result;
url = url || APP.urlParameterPairs();
$.each(url, function (i) {
var pair = url[i];
if (pair[0] === key) {
result = pair[1];
return false;
}
});
return result;
}());
}
};
console.log('name: ' + APP.findUrlParameter('name'));
console.log('test: ' + APP.findUrlParameter('test'));
}());
日誌:
- 未定義
- 名:湯姆
- 未定義
- 試驗:123
預期:
- 未定義
- 名:湯姆
- 陣列:[ 「名稱」, 「湯姆」],[ 「測試」, 「123」]
- 測試:123
每次調用函數'findUrlParameter'你重新分配變量'url',那麼你怎麼能緩存呢? –
在函數內部聲明變量將在每次函數評估時創建一個新變量。 – Bergi
謝謝,你是對的,那沒什麼意義,我正在嘗試。我以錯誤的方式使用閉包。我現在可以修復它,看我的答案。 –