首頁 >web前端 >js教程 >JS中的eval 為什麼加括號_javascript技巧

JS中的eval 為什麼加括號_javascript技巧

WBOY
WBOY原創
2016-05-16 15:05:401677瀏覽

eval簡介

---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