__________________________________________________________________
쉽게 말해서 인자로 받은 내용에 대해서 evaluate, 즉 값을 매겨서 그 결과값을 반환한다고 생각하시면 됩니다. 문자열로 된 수식을 계산식으로 변환하는 것이 기본적인 기능이지만 문자열로 된 변수명이나 객체를 해당 변수나 객체로 변환시키는 역할도 합니다.
alert('test1='+test1); 이 부분은 당연히 test1 변수에 'test2' 라는 값이 저장되어 있으니 'test1=test2' 라고 경고창이 뜨겠죠.
alert(test1+'='+eval(test1)); 이부분은 test1이라는 변수가 'test2' 라는 값을 가지고 있으므로 eval(test1) 은 곧 eval('test2'), 즉 'test2' 라는 문자열을 값을 매겨서(바꿔 말하면 변수명으로 생각해서) test2 라는 변수로 인식하라는 말이죠. 그러므로 결과적으로는 'test2=test3' 라고 경고창이 뜰테구요..
alert(eval(test1)+'='+eval(eval(test1))); 이 부분 역시 위에서와 마찬가지로 앞의 eval(test1) 은 'test3' 라는 값을 가지게 되고 뒤의 eval(eval(test1)) 은 eval('test3') , 즉 test3 라는 변수의 값인 'test4' 라는 문자열을 의미하므로 결과적으로는
'test3=test4' 라고 경고창이 뜨게 되겠죠.
마찬가지로 eval("form.check"+i+".value"); 이라는 의미는
'form.check' 라는 문자열에 i 라는 변수의 값과 'value'라는 문자열을 합쳐서 form.check1.value 나 form.check2.value 를 표현하는 것이죠.
글구.... 위에서는 eval("form.check"+i+".value"); 과 eval("document.test.check"+i+".value"); 은 서로 같은 의미입니다.