2010-08-16 2 views
12

내가 아니라고하면 잘못된 평가는 주어진 문자열에 유효한 코드를 실행사람들이 javascript eval()이 악하다고 말하는 이유는 무엇입니까?하지만 setTimeout 및 setInterval 등 반대 의견이 없습니까?

eval("alert('hey')"); 

setTimeout("alert('hey')",1000); 

단지 같은 일에 대해, 단지 타이머 않습니다. eval보다 위험한 시간 초과가 설정 되었습니까?

+3

좋은 질문 :) 내가 대답은 '예 추측 여기 더 http://stackoverflow.com/questions/197769/when-is-javascripts-eval-not- evil – mplungjan

답변

20

나는 같은 반대 의견을 듣고 싶습니다. setTimeout (문자열 및 함수 매개 변수가 아님)은 eval과 거의 같습니다.

가능하면

,

setTimeout(function(){ alert ("hey") ; }, 1000); 
+0

'setTimeout'의 올바른 사용 예를 제공하기 위해 –

+8

+1이 가능해서는 안됩니다. 문자열 인수를 전달하는 기능이 사람들이 자바 스크립트를 사용하는 방법보다 좋지 않은 것 같습니다. –

+0

+1 내 코드가 보안 변경이 필요합니다.) 감사합니다. 흠, 시간 제한을 사용할 수 있다는 것을 정확히 인식하지 못했습니다. –

4

사람들이 "eval"이라고 말하면 "eval 및 eval과 거의 동일"한 기능을 의미하기 때문에 전자는 훨씬 짧습니다. 귀하의 질문에 대한 대답은 '예'입니다. 위험합니다.