티스토리 뷰
반응형
참고 :
eval() - JavaScript | MDN
eval() 주의: 문자열로부터 eval()을 실행하는 것은 엄청나게 위험합니다. eval()을 사용하면 해커가 위험한 코드를 사용할 수 있습니다. 아래에 eval을 절대 사용하지 말 것!을 확인하세요. eval()은
developer.mozilla.org
- eval은 매개변수로 받은 문자열을 코드로 해석하는 내장함수이다.
console.log('2+2');
console.log(eval('2+2'));
/* 실행 결과
2+2
4
*/
console.log('console.log("abc");');
eval('console.log("abc");');
/* 실행 결과
console.log("abc");
abc
*/
let ingnoh='hello';
eval('ingnoh="world"'); // 외부 변수에 접근이 가능
console.log(ingnoh);
/* 실행 결과
world
*/
- 과거에는 eval을 사용해야만 처리할 수 있는 문제들이 있었지만, JS가 발전함에 따라 그 필요성이 퇴색되었다고 함.
- eval을 사용하는 것은 가독성 및 코드 유지 보수 차원에서의 단점이 있다. eval 내부의 문자열이 외부 변수에 접근할 수 있기 때문!
- 하지만 무엇보다 큰 단점은 eval이 caller의 권한으로 실행된다는 점에 있다.
- 웹페이지 또는 확장 프로그램의 권한으로 eval이 실행되는 경우, 악의적인 코드를 수행하도록 악용될 수 있다.
'Dev. > javascript' 카테고리의 다른 글
[JS] 프로토타입(prototype) (0) | 2021.03.30 |
---|---|
[JS] Array-like(유사 배열) / Array(배열) (0) | 2021.03.29 |
[JS] async와 await (0) | 2021.03.23 |
[JS] 구조 분해 할당 (destructing assignment) (0) | 2021.03.09 |
[Vanilla JS] document ready 표현 (0) | 2021.02.22 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Java
- AWS
- Vault
- IntelliJ
- Spring Cloud Config
- etc
- Puppeteer
- shell
- Docker
- postgresql
- mysql
- Node.js
- RancherDesktop
- react
- spring boot
- Database
- jQuery
- pgloader
- 코딩테스트
- kotlin
- JEST
- JPA
- eureka
- Linux
- AWS IoT
- hashicorp
- javascript
- Git
- terraform
- Gradle
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함