아하
검색 이미지
생활꿀팁 이미지
생활꿀팁생활
생활꿀팁 이미지
생활꿀팁생활
하얀고슴도치236
하얀고슴도치23619.05.09

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

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

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

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

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

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

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

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

55글자 더 채워주세요.
답변의 개수
2개의 답변이 있어요!
  • 보안 문제로 eval을 사용하지 말라고 합니다.

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

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

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

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


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

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

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