평가 소개
---eval은 ECMA 정의에서 전역 객체 프로토타입의 메서드입니다.
---eval에서 허용하는 매개변수는 문자열 형식의 js 코드입니다. 이 문자열은 실행 엔진에 의해 실행됩니다(여기서 '고급 프로그래밍'이라고 말한 것을 기억하세요. 이때 새 실행 엔진을 생성하세요). 결과는 eval이 호출되는 위치입니다.
<!DOCTYPE html> <html> <head> <title>eval学习</title> <script type="text/javascript"> /* eval("表达式");执行表达式语句 eval("("+javascript类型+")");转为javascript对象 */ var jsonObj={"name":"ljl","data":123};//json,是javascript的对象 var jsonString='{"name":"ljl","data":123}';//javascript的string类型,字符串内容符合json格式的样式 var objType=eval("("+jsonString+")");//通过eval函数将json字符转为javascript对象 alert( typeof jsonString);//string alert( typeof objType);//obj alert(eval(123));//123 alert(typeof eval("("+123+")"));//number var x=2; var y=eval('x+1');//执行 2+1 表达式 alert('y= '+y);//3 </script> </head> <body> </body> </html>
추가: 요약
eval은 js의 동적 기능 중 하나입니다. js 프로그램을 직접 실행하고 결과를 반환할 수 있습니다. 일반적인 용도는 json 데이터를 js 개체로 복원하는 것입니다.
그러나 런타임에 컨텍스트 개체를 동적으로 변경할 수 있기 때문에 주입 공격의 위험이 있습니다.
사용할 때 eval이 문자열 구문을 어떻게 이해하는지 주의하세요. 일반적인 문제는 '중괄호' 문제입니다