스토리지가 꽉 찼을 때 모듈이 수행 할 작업을 실제로 시뮬레이션하고 테스트해야했기 때문에 수용된 대답이 아니라 스토리지가 가득 차면 i ^ 2의 속도로 정밀도를 잃는 정확한 정확도를 얻어야했습니다.
다음은 메모리 캡에 도달했을 때 항상 10의 정밀도를 생성해야하는 스크립트이며, 몇 가지 쉬운 최적화에도 불구하고 상당히 빠르게 ... 편집 : 스크립트를 더 좋고 정확한 정밀도로 만들었습니다.
function fillStorage() {
var originalStr = "1010101010";
var unfold = function(str, times) {
for(var i = 0; i < times; i++)
str += str;
return str;
}
var fold = function(str, times) {
for(var i = 0; i < times; i++) {
var mid = str.length/2;
str = str.substr(0, mid);
}
return str;
}
var runningStr = originalStr;
localStorage.setItem("filler", runningStr);
while(true) {
try {
runningStr = unfold(runningStr, 1);
console.log("unfolded str: ", runningStr.length)
localStorage.setItem("filler", runningStr);
} catch (err) {
break;
}
}
runningStr = fold(runningStr, 1);
var linearFill = function (str1) {
localStorage.setItem("filler", localStorage.getItem("filler") + str1);
}
while(true) {
try {
linearFill(runningStr)
} catch (err) {
runningStr = fold(runningStr, 1);
console.log("folded str: ", runningStr.length)
if(runningStr.length == 0)
break;
}
}
console.log("Final length: ", JSON.stringify(localStorage).length)
}