eval() 기능함수는 Javascript 코드가 맞는가 틀린가를 검정하고 수행한다.

eval(jsString)
인수
eval() : (검정, 수행 기능함수)
필수적인 인수로 최상위 내장 기능함수이다.
jsString : (검정할 문자열)

선택적인 인수로 기능함수의 인수(argument)로 주어진 코드 문자열로 검정의 대상이 된다.

jsString은 선택적이기는 하지만, 없으면 값 "undefined"을 반환한다.

인수는 Javascript 코드가 아니고 문자열임에 주의하라.

설명

검정하는 순서는

  1. 제공된 jsString 문자열이 Javascript로 유효한가를 먼저 검정한다.
  2. Javascript 코드로서 해석하기 위하여 파싱(parse)한다.
  3. eval() 기능함수는 파싱된 내용에서 Javascript 문장 코드를 발견하면, 그 내용을 수행하고,
  4. 그 결과값이 있으면, 그 값을 반환한다(return).
특기

jsString은 Javascript 문장, 복수의 문장등이며 개체(object)의 변수와 속성(property)을 가질 수 있다.

문자열로 구성된 Javascript 문장을 직접 실행시키는데 유용하다.



간단한 eval() 검정 예제

<SCRIPT>
eval('document.write(12345)'); // 문장 수행, 결과 출력
eval('document.write("<BR>")'); // 문장 수행, 결과 출력(줄바꿈)
</SCRIPT>

eval()로 복수 문장 검정 예제

<SCRIPT>
eval('number1=1234; number2=5678; document.write("덧셈 계산="+(number1+number2)+" | ")');
  // 여러 문장 수행(계산), 결과 출력 수행, 수치가 문자열과 결합하면 문자열이 되므로 괄호로 묶어 주어야 계산된다.
eval('number1=1234; number2=5678; document.write(number1+number2)');
  // 여러 문장 수행(계산), 결과 출력 수행, 문자열과 결합하지 않으므로 괄호가 없어도 계산된다.
eval('number1=1234; number2=5678; document.write("<BR>문자열 결합="+number1+number)');
  // 여러 문장 수행(문자열 결합), 결과 출력 수행
</SCRIPT>

Infinity, NaN 검정 예제

<SCRIPT>
eval('number1=1234; number2=5678; document.write(Math.pow(number1,number2)+"<BR>")');
  // 여러 문장 수행(계산), 결과 출력 수행, 결과 수치가 너무 커서 부동 소수점으로 표시 할 수 없다.
eval('number1="1,234"*100; document.write(number1)');
  // 여러 문장 수행, 결과 출력 수행, 결과는 문자열과 수치를 곱하였으므로 수치가 아니다.
</SCRIPT>

for 루프 문장 검정 예제

<SCRIPT>
eval('for(i=1;i<5;i++){ document.write("Loop A : "+i+"<BR>")}'); // 여러 문장 수행, 결과 출력(위 4줄) 수행
document.write(eval('for(i=1;i<5;i++){ i+" Loop B<BR>"}')); // 여러 문장 수행, 결과 출력, 모두 수행하나 마지막 한줄만 출력
</SCRIPT>

eval 기능함수로 Date, for 루프 예제

따옴표 없는 eval(for (i=0;i<20;i++) document.write(i+", "))는 오류가 발생된다.
<SCRIPT>
eval('document.write(mydate=new Date())'); // Date 개체를 포함하는 mydate 변수를 새로 만든다.
document.write(' = '+mydate);

eval('for (i=0;i<20;i++) document.write(i+", ")'); // for 루프를 수행한다.
// eval(for (i=0;i<20;i++) document.write(i+", ")) 문자열이 아니므로 오류 발생
</SCRIPT>

onClick 이벤트로 for 루프 기능함수를 호출하여 검정하는 예제

클릭하여 결과를 보라.
<SCRIPT>
function checkit(){
  var str=''; // 문자열 변수 선언
  var sqr=cum=0; // 수치 변수 선언
  for (i=1;i<=10;i++){ // 1에서 10까지 1씩 증가시키는 루프
    sqr=i*i;   // 제곱
    cum+=sqr;  // 제곱값 누적
    str+='['+i+']의 제곱값='+sqr+' 누적='+cum+'<BR>'; // 출력 문자열으로 결합
  } // 루프 종료
  eval('showArea.innerHTML=str'); // id=showArea 인 개체에 출력(HTML 태그로 넣어 줌)
} // 기능함수 종료
</SCRIPT>

<DIV id=showArea style="border:solid 1 blue;background:white;width:200;padding:5" title="결과"
  onClick="checkit()">클릭하여 결과를 보라.</DIV>

따라서 Javascript 문장을 수행하게 하는데에도 많이 사용된다.