Programming/JavaScript

모던 자바스크립트 13. Eval (문자열 코드 실행하기)

2mukee 2022. 4. 23. 20:37
320x100
320x100

eval

: 문자열 형태의 코드를 실행 할 수 있게하는 내장함수

let result = eval(code);
let code = 'alert("Hello")';
eval(code); // Hello

: 길이가 긴 문자열이 코드가 될 수 있는데, 여기엔 줄 바꿈, 함수 선언 변수 등이 포함 가능

: 마지막 구문의 결과가 eval의 결과가 됨

 

- eval 예시

let value = eval('1+1');
alert(value); // 2
let value = eval('let i = 0; ++i');
alert(value); // 1
let a = 1;

function f() {
  let a = 2;

  eval('alert(a)'); // 2
}

f();

: eval로 둘러싼 코드는 현재 렉시컬 환경에서 실행 되므로 외부 변수에 접근할 수 있음

 

- 외부 변수 변경 

let x = 5;
eval("x = 10");
alert(x); // 10, 변경된 값

 

- 엄격모드에서의 eval

// 참고: 실행 가능한 모든 예시에 'use strict'가 적용되어있습니다.

eval("let x = 5; function f() {}");

alert(typeof x); // undefined (없는 변수)
// 함수 f도 읽을 수 없음

: 자체 렉시컬 환경으 갖고 있어, eval 내부에 선언된 함수와 변수는 외부에서 읽을 수 없음

 

 

※ eval은 모던 프로그래밍에서 잘 사용되지 않음

 

 

 

 

Refference

 

Eval: 문자열 코드 실행하기

 

ko.javascript.info

 

300x250
728x90