eval is evil......
latte is horse. eval이라는 것을 많이 쓰긴했었다. 아 라떼라고 해봤자 10년전? 좀 더 된 이야기 일 것이다. 10년전 군대이야기였으니 말이다.
지금 보고 있는 분의 웹개발을 공부하기 시작 했을 때가, 2013년? 정도라면 한 번쯤 코드에서 볼까말까 한 함수일 것이다.
eval 함수에 대한 간단한 소개를 해보자.
eval은 문자열 형태의 코드를 실행 할 수 있게 해준다. eval은 문자열의 형태의코드를 평가 할 수 있게 해준다.
let value = eval('1+1')
alert(value) // 2
let value = 5
eval('value = 10')
alert(value) // 10
eval('let value = 10')
alert(value) // Uncaught ReferenceError: value is not defined
위의 내용을 보면 적당히 감을 잡아볼 수 있을 것이다. 그런데 왜 썻을까? 저런 코드를... 아무리 보아도 합당한 내용이 떠오르지 않을 수 있다. 하지만, 그 옛날의 코드들이라면 이해 할 수 있을지 모른다. 뭐 실제로 나도 썼으니까...... 간단하게 얘기 하자면, 그 옛날은 프런트엔드 코드가 그렇게 아름답지만은 않았다. 뭐 지금도 몇몇 부분들에 대해서는 아름답다고는 말할 수 없지만......
지금과는 달리 대부분의 로직들이 백엔드로 빠져있었고 백엔드에서 프런트엔드에 이런 상황에는 이런코드를 실행해 달라는 식으로 밀어넣었던 것이다. 즉 프런트엔드에서 백엔드와의 상호 작용으로 어떤 이벤트의 결과 데이터를 프런트엔드에서 확인 하여 이러한 상황에서는 이 함수를 실행 하여야 해! 이런식으로 능동적인 코드가 아닌.
백엔드에서 프런트엔드에서 이러한 데이터가 들어왔고 이러한 상황이니 프런트엔드가 실행할 코드를 짜서 내려주는 방식이었다. 그때는 그럴수 있었던게 프런트엔드가 할 일이 많았던 상황이 아니었다. 웹 개발자, 퍼블리셔는 있었어도 프런트엔드개발자라는 말은 들을 수 없었던 때이니 말이다.
결론: 지금 상황에서는 eval 함수를 사용 해야하는 상황은 떠오르지 않는다. 하지만 필요한 경우가 있다면, 어떠한 점을 주의해야 하는지 알고 쓰도록 하자. 안 쓰는데에는 이유가 있다.
댓글
댓글 쓰기