nodejs에서는 eval() 메소드를 사용하여 문자열을 계산하고 이를 스크립트 코드로 실행합니다. 매개변수가 문자열이 아니고 정수 또는 함수 유형인 경우 구문은 "eval(string)"입니다. 이 정수 또는 함수를 반환합니다.
이 튜토리얼의 운영 환경: windows10 시스템, nodejs 버전 12.19.0, DELL G3 컴퓨터.
nodejs에서 eval 메소드를 사용하는 방법
eval() 함수는 JavaScript 문자열을 계산하여 스크립트 코드로 실행합니다.
매개변수가 표현식이면 eval() 함수가 표현식을 실행합니다. 인수가 Javascript 문인 경우 eval()은 Javascript 문을 실행합니다.
Syntax
eval(string)
매개변수 설명
string 필수입니다. 평가할 JavaScript 표현식 또는 실행할 명령문이 포함된 평가할 문자열입니다.
eval() 메서드의 매개변수 형식
매개변수 s가 문자열이 아니고 정수 또는 함수 유형인 경우 정수 또는 함수가 직접 반환됩니다.
예를 들어
예 1:
var x = 1; var y = eval(x);//eval()方法返回1 var z = eval(1)//eval()方法返回1
예시 2:
var f = eval( function(){ console.log("1111"); return 1 } ); /* eval()方法返回: function(){console.log("1111");return 1;}方法 */ var s = f();//执行方法 s=1,打印日志"1111" /**>>>>>>>>>>>>>>>**/ var ff = function(){ console.log("1111"); return 1; }; var f = eval(ff);//eval()方法返回ff方法 var s = ff();//执行ff方法 s=1,打印日志"1111" /**>>>>>>>>>>>>>>>**/ function ff(){ console.log("1111"); return 1; }; var f = eval(ff);//eval()方法返回ff方法 var s = ff();//执行ff方法 s=1,打印日志"1111"
매개변수 s가 문자열이고 문자열이 표현식인 경우 eval() 메서드는 문자열의 표현식을 계산하고 표현식 계산 결과를 반환합니다.
예를 들어
eval("'true'");//返回字符串"true" eval("ture");//返回Boolean类型的true eval("1");//返回整数1 eval("[0,1,2]");//返回数组[0,1,2] eval("2+2");//返回整数4 eval("2+'2'");//返回字符串"22"
매개변수 s가 문자열이고 문자열의 표현식이 JSON 형식인 경우(이때 JSON을 둘러싸려면 JSON 형식 외부에 괄호 한 쌍을 추가해야 함), eval () 메서드 이 JSON을 반환합니다.
예를 들어
var j = "{'aa':11,'bb':22}"; eval("("+j+")"); //返回{"aa":11,"bb":22} eval("({'aa':11,'bb':22})"); //返回{"aa":11,"bb":22} eval("({aa:11,bb:22})"); //js中{aa:11,bb:22}这种格式在解析时会转换成{'aa':11,'bb':22}这种格式 eval("{'aa':11,'bb':22}"); //抛出异常
Note
eval() 메소드의 경우 위에서 언급한 JSON 형식도 표현식의 한 유형입니다. 그러나 JSON 형식에 괄호가 없으면 eval() 메서드는 객체를 반환하지 않습니다.
예를 들어 eval("{'aa':11,'bb':22}")은 {'aa':11,'bb':22}를 반환하지 않습니다.
eval() 메서드는 대괄호 "{}"를 명령문 블록으로 처리하기 때문입니다. 그러면 eval() 메서드는 명령문만 실행하고 값을 반환하지 않습니다(결과는 예외임).
올바른 작성 방법은 JSON 형식 외부에 괄호 "()"를 추가하여 해당 형식을 강제로 JSON 형식(표현식)으로 변환하고 JSON 값을 반환하는 것입니다. 이는 직접 함수(function(){})()와 동일합니다. ()의 함수는 함수를 표현식으로 강제 변환하고 반환하는 것입니다.
매개변수 s가 문자열이고 문자열이 명령문 또는 명령문 블록인 경우 eval() 메서드는 명령문 또는 명령문 블록을 실행하고 정의되지 않은
을 반환합니다. 예를 들어
eval("var x='1';"); //返回undefined console.log(x); //打印字符串1 /**>>>>>>>>>>>>>>>**/ eval("var x=1;var y=2;var z=x+y;"); //返回undefined console.log(z+""); //打印字符串3 /**>>>>>>>>>>>>>>>**/ s = eval("function t(){alert(3)};t();"); //执行定义并调用t的方法:弹出3.并且返回undefined console.log(s); //打印undefined /**>>>>>>>>>>>>>>>**/ eval("var j={sex:'男',age:27};alert(j.age);"); /* 此处的json对象不用小括号"()"括起来。因为该处是执行语句,而非计算表达式 */
Notes
eval() 메서드는 명령문에 json 형식이 있으면 json 형식을 괄호 "()"로 묶을 필요가 없습니다. 표현식의 json을 묶은 이유는 eval()이 표현식을 평가하고 결과를 반환하기 때문입니다. 그리고 eval()은 명령문만 실행하고 반환 값을 계산하지 않습니다(반환된 값은 모두 (정의되지 않음)이기 때문입니다)
노드 관련 지식을 더 보려면 nodejs tutorial!!
을 방문하세요.위 내용은 nodejs에서 eval 메소드를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!