eval()은 JavaScript 소스 코드로 구성된 문자열을 해석하고 실행하기 위해 eval()을 사용합니다. 매개변수를 직접적으로 사용합니다. 매개변수가 문자열이면 해당 문자열을 자바스크립트 코드로 컴파일합니다. 컴파일이 실패하면 SyntaxError 예외가 발생합니다. 컴파일이 성공하면 이 코드의 실행이 시작되고 문자열의 마지막 표현식이나 명령문의 값이 반환됩니다. 마지막 표현식이나 명령문에 값이 없으면 최종적으로 undefound가 반환됩니다. 문자열에서 예외가 발생하면 예외는 eval()에 대한 호출을 전달합니다.
var result = eval('3+2'); console.log(result,typeof result);//5 'number'
Scope
eval()은 호출되는 가변 범위 환경을 사용합니다. 즉, 변수의 값을 조회하고 로컬 범위의 코드와 정확히 동일한 새 변수 및 함수를 정의합니다. 문자열은 최상위 전역 코드로 실행됩니다. 실행된 코드는 새로운 전역변수와 전역함수를 정의하거나 전역변수에 값을 할당할 수 있으나, 함수 내에서 지역변수를 사용하거나 수정할 수는 없습니다
var num = 1; var str = 'test'; console.log(eval(num));//1 console.log(eval(str));//ReferenceError: test is not defined var strLong1 = 'var x = 1;var y = 2;'; console.log(eval(strLong1),x,y);//undefined 1 2 var strLong2 = 'var x = 1; x++;'; console.log(eval(strLong2),x);//1 2
[참고] IE8 - 브라우저는 eval(를 통해 별칭 )은 eval()
엄격 모드
var b = 2; function foo(str,a){ eval(str); console.log(a,b); } foo('var b = 3;',1);//1 3
으아악
위 내용은 JavaScript 전역 함수 평가 및 기타 예제의 정의, 사용법 및 부작용에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!