아하
생활

생활꿀팁

하얀고슴도치236
하얀고슴도치236

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 값이 정해져있는게 아니라 수많은 값들이 다 들어가 있으므로,

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