Q. javascript 에서 문자열을 function 으로 사용하는법은 무엇입니까?

JS2 2019. 05. 09.


javascript 에서 문자열을 function 으로 사용하는법은 무엇입니까?

eval 함수를 사용하려고 하였지만 스택오버플로우를 포함한 많은 곳에서 eval 을 사용하지 말라고 합니다.

여기서 질문이 2가지 생깁니다.

  1. eval 을 왜 사용하지 말라고 하는가?

  2. 그렇다면 다른 대안중 가장 안정적이고 대중적인건 무엇인가?

답변 부탁드립니다. 참고로 제가 사용하여야 하는 함수는 현재

eval(somefunction(1,'2','someting')) 형식으로 사용중 입니다.

공유하고 보상받기 ♥︎
댓글 0

2개의 답변이 있습니다.

질문자 & 큐레이터 채택
프알못 답변자인증
익스트림 QA팀 2019. 05. 09 93%의 채택

보안 문제로 eval을 사용하지 말라고 합니다.

사용자가 입력한 값이나, 외부에서 가져온 값 등을 적절한 가공 없이 eval로 실행할 경우 큰 문제가 발생할 수 있기 때문인데,
eval(...)이 아니라도... (new Function(...))()이든 뭐든, 아무거나 막 실행하면 문제가 된다는 점은 같습니다.

확실히 믿어도 되는 코드를 실행한다면 별 문제 없습니다.

보안 문제로 strict mode에서는 eval을 사용할 수 없다거나 하는 제약사항이 생기기도 하는데,

document.createElement("SCRIPT")<script> 엘리먼트를 만들어서 innerHTML에 실행할 코드를 넣고,
<script> 엘리먼트를 insertBefore로 삽입해서 실행하는 방법으로 우회할 수 있습니다.

댓글 0
흠야냐이 답변자인증
2019. 05. 10 7%의 채택

자바 function에서 class or object는 매우 많아서 기본적으로 설정 노가다가 필요합니다.

default 값이 정해져있는게 아니라 수많은 값들이 다 들어가 있으므로,

하나하나 구글링 해보시는 부분이 좋을듯 하네요

댓글 0