javascript

javascript의 eval()함수란 무엇인가!

jeeyong 2007. 11. 12. 15:39
"3+4"라는 문자열을 7이라는 값으로 계산해주는 함수로 알고 계신다고 하셨는데..
잘못된 지식입니다.

eval() 함수변수를 javascript의 함수처럼 쓰는 명령어 입니다.

즉.
str += "document.test.check"+i+".value";
위의 뜻은 변수명이 document.test.check1.value 형식으로 들어가는데...
이것을 함수처럼 쓸수는 없다는 뜻입니다.
그냥 저런 문자열이라는 뜻이죠.
결국  str을 alert시키면 document.test.check1.value이 출력되게 됩니다.

그리고
str += eval("document.test.check"+i+".value");
str에 함수이름들이 들어가 있는 겁니다.
그래서 alert를 시키면 value가 1이나 2가 찍히게 되는 것이지요.

두번째 것은 로직상의 문제는 없습니다만..
this.form이 실행될때와 document.test가 잘 실행될때가 있더군요..
문제점은 확실히 모르겠고요..

프로젝트 도중에도 그런 상황에 여러가지를 실행합니다.
 
 

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 문장을 직접 실행시키는데 유용하다.