"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의 함수처럼 쓰는 명령어 입니다.
즉.
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 코드가 아니고 문자열임에 주의하라.
- 설명
-
검정하는 순서는
- 제공된 jsString 문자열이 Javascript로 유효한가를 먼저 검정한다.
- Javascript 코드로서 해석하기 위하여 파싱(parse)한다.
- eval() 기능함수는 파싱된 내용에서 Javascript 문장 코드를 발견하면, 그 내용을 수행하고,
- 그 결과값이 있으면, 그 값을 반환한다(return).
- 특기
-
jsString은 Javascript 문장, 복수의 문장등이며 개체(object)의 변수와 속성(property)을 가질 수 있다.
문자열로 구성된 Javascript 문장을 직접 실행시키는데 유용하다.
'javascript' 카테고리의 다른 글
자바스크립트 정규표현식 (4) | 2007.11.28 |
---|---|
자바스크립트 성능 향상 팁 (0) | 2007.11.23 |
String Function모음 String을 자바처럼 핸들링해보잣~! (0) | 2007.11.19 |
유용한 자바스크립트 (0) | 2007.11.19 |
자바 스크립트 내장 객체 오버라이딩 (javascript prototype overriding) (1) | 2007.11.12 |