2011-05-08 3 views
1

이 코드를 실행할 때 변수 항목은 9999자를 추가하고 나머지는 잘립니다. 이전 게시물에서 몇 가지 답변을 얻었지만 문제는 여전히 지속됩니다.자바 스크립트 개체 최대 크기 제한 (10000 자)

var items = []; 
for (var i = 1; i < 400; i++) { 
    items.push('{"Key":' + '"this is a javascript value"' + 
       ",'+'" + '"Value"' + ':' + '"this is value"}'); 
} 
alert(items); 

도움말!

+0

견본이 맞지 않습니다. 항목은 399 가지가 포함 된 배열이됩니다. 어떻게 잘리는가? 당신은 덜 모호 할 필요가 있습니다. –

+1

우선,'alert'는 문자열을 취하고, 배열을 전달하면 배열의'toString' 메쏘드가 호출됩니다. 그리고 이것이 당신이 무엇을 할 것으로 기대하는지 모르겠습니다. 'alert (items.length)'를 해봤습니까? –

+0

alert (array)를 수행하면 배열의 항목을 인쇄하지만 9999 개의 문자 만 경고됩니다. – Paras

답변

2

값이 alert이면 배열이 문자열로 변환 된 다음 경고 상자에 넣어집니다. 대부분의 경우 문자열은 최대 길이로 자릅니다. 그렇지 않으면 그래픽상의 이유로 화면이나 상자에 맞지 않습니다.

메모리에서 시도하고 길이만을 경고 할 때 모든 것이 정상적으로 보일뿐 아니라 toString()이 올바른 길이를 반환합니다. 4000 요소를 시도하고 길이를 분석 : http://jsfiddle.net/LWD2h/1/.

1

경고에 대한 10,000 자 제한 (다른 브라우저에서 테스트되지 않은 FireFox)에 대한 대안이 있습니다. 사용자가 아닌 디버깅 목적으로 만 경고를 표시하려면 프롬프트 문을 사용할 수 있습니다.

var myLongString = "A really long string"; 
prompt('',myLongString); 

이 표시, 당신은 프롬프트에서 한 줄의 텍스트를 볼 때,하지만 당신은 함께 할 수있는 편집기에 프롬프트 상자에 클릭하고 모든 텍스트를 선택하고 붙여 넣을 수 있습니다 : 같은 코드가 보일 것이다 원하는대로. 이 작업을 사용자에게 맡기는 것은 끔찍한 일이지만, 빠르고 더러운 디버깅에는 좋습니다. 프롬프트 문은 모든 줄 바꿈을 제거하기 때문에 호출하기 전에 다른 줄로 변환 한 다음 텍스트 편집기에서 다시 변환해야합니다. 위의 코드에 해당 코드를 통합

제공 :

var myLongString= "A\nreally\nlong\nstring\nwith\nline\nfeeds."; 
prompt('', myLongString.replace(/\n/g,"[email protected]@="); 

텍스트 편집기에 문자열을 붙여 넣기 한 후 검색 할 것이며, '\ n을'함께 '= @@ ='를 대체합니다.

+0

을 호출하는 것입니다. 또는 훨씬 더 향상된 디버깅 도구 인 콘솔을 사용하십시오. –