JS中的eval 為什么加括號
eval簡介
---eval在ECMA定義中是全局對象原型的方法;
---eval接受的參數(shù)是字符串格式的js代碼, 將由執(zhí)行引擎(記得'高級程序設(shè)計(jì)'還是哪說過, 此時(shí)新建一個(gè)執(zhí)行引擎)執(zhí)行這段字符串, 然后返回結(jié)果到eval調(diào)用的位置.
<!DOCTYPE html>
<html>
<head>
<title>eval學(xué)習(xí)</title>
<script type="text/javascript">
/*
eval("表達(dá)式");執(zhí)行表達(dá)式語句
eval("("+javascript類型+")");轉(zhuǎn)為javascript對象
*/
var jsonObj={"name":"ljl","data":123};//json,是javascript的對象
var jsonString='{"name":"ljl","data":123}';//javascript的string類型,字符串內(nèi)容符合json格式的樣式
var objType=eval("("+jsonString+")");//通過eval函數(shù)將json字符轉(zhuǎn)為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');//執(zhí)行 2+1 表達(dá)式
alert('y= '+y);//3
</script>
</head>
<body>
</body>
</html>
補(bǔ)充:總結(jié)
eval是js動(dòng)態(tài)特性之一, 通過它直接執(zhí)行js程序并返回結(jié)果, 常見的使用就是還原json數(shù)據(jù)為js對象;
但是由于其能在運(yùn)行時(shí)動(dòng)態(tài)改變上下文對象, 因此帶來了注入攻擊的風(fēng)險(xiǎn);
使用時(shí), 注意eval對字符串的語法認(rèn)識是如何的, 常見的就是'大括號'問題
相關(guān)文章
微信公眾號開發(fā) 實(shí)現(xiàn)點(diǎn)擊返回按鈕就返回到聊天界面
本文分享了微信公眾號開發(fā)實(shí)現(xiàn)點(diǎn)擊返回按鈕就返回到聊天界面的示例代碼。需要的朋友一起來看下吧2016-12-12
javascript getElementsByClassName函數(shù)
今天在腳本中應(yīng)用到了根據(jù)類名取元素的方法,卻對其效率不甚滿意。于是,小幅修改了其探測元素類名的方法,提升了約3成的效率.2010-04-04
javascript中的數(shù)字與字符串相加實(shí)例分析
javascript中的數(shù)字與字符串相加實(shí)例分析,學(xué)習(xí)js的朋友可以參考下。2011-08-08
Wordpress ThickBox 添加“查看原圖”效果代碼
上一次修改了點(diǎn)擊圖片動(dòng)作 , 這次添加一個(gè)“查看原圖”的鏈接,點(diǎn)擊后將在一個(gè)新瀏覽器窗口(或Tab)打開該圖片的原始鏈接地址。2010-12-12
原生js實(shí)現(xiàn)移動(dòng)端Touch輪播圖的方法步驟
這篇文章主要介紹了原生js實(shí)現(xiàn)移動(dòng)端Touch輪播圖的方法步驟,touch輪播圖其實(shí)就是通過手指的滑動(dòng),來左右切換輪播圖,touch輪播圖其實(shí)就是通過手指的滑動(dòng),來左右切換輪播圖,2019-01-01
封裝html的select標(biāo)簽的js操作實(shí)例
本文將為大家介紹下正如標(biāo)題所示的select操作:清空所有的選項(xiàng)、添加一個(gè)選項(xiàng)、根據(jù)值、選中一個(gè)選項(xiàng)、根據(jù)下標(biāo),選中一個(gè)選項(xiàng),感興趣的朋友可以參考下哈,希望對大家有所幫助2013-07-07

