>  기사  >  웹 프론트엔드  >  JS_javascript 팁에서 eval에 대괄호를 추가하는 이유

JS_javascript 팁에서 eval에 대괄호를 추가하는 이유

WBOY
WBOY원래의
2016-05-16 15:05:401601검색

평가 소개

---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이 문자열 구문을 어떻게 이해하는지 주의하세요. 일반적인 문제는 '중괄호' 문제입니다

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.