JS中的eval 為什么加括號
eval簡介
---eval在ECMA定義中是全局對象原型的方法;
---eval接受的參數(shù)是字符串格式的js代碼, 將由執(zhí)行引擎(記得'高級程序設(shè)計'還是哪說過, 此時新建一個執(zhí)行引擎)執(zhí)行這段字符串, 然后返回結(jié)果到eval調(diào)用的位置.
<!DOCTYPE html> <html> <head> <title>eval學習</title> <script type="text/javascript"> /* eval("表達式");執(zhí)行表達式語句 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 表達式 alert('y= '+y);//3 </script> </head> <body> </body> </html>
補充:總結(jié)
eval是js動態(tài)特性之一, 通過它直接執(zhí)行js程序并返回結(jié)果, 常見的使用就是還原json數(shù)據(jù)為js對象;
但是由于其能在運行時動態(tài)改變上下文對象, 因此帶來了注入攻擊的風險;
使用時, 注意eval對字符串的語法認識是如何的, 常見的就是'大括號'問題
相關(guān)文章
微信小程序防止多次點擊跳轉(zhuǎn)和防止表單組件輸入內(nèi)容多次驗證功能(函數(shù)防抖)
這篇文章主要介紹了微信小程序防止多次點擊跳轉(zhuǎn)和防止表單組件輸入內(nèi)容多次驗證功能(函數(shù)防抖),需要的朋友可以參考下2019-09-09json對象轉(zhuǎn)為字符串,當做參數(shù)傳遞時加密解密的實現(xiàn)方法
下面小編就為大家?guī)硪黄猨son對象轉(zhuǎn)為字符串,當做參數(shù)傳遞時加密解密的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-06-06JavaScript使用canvas實現(xiàn)手寫簽名功能
最近遇到一個h5手寫簽名的需求,按理說這種功能網(wǎng)上隨便一搜一大把現(xiàn)成的源碼和組件,但是像這種比較經(jīng)典又很簡單的功能,還是要弄清楚到底怎么實現(xiàn)的,所以接下來本文就給大家介紹一下如何用canvas實現(xiàn)手寫簽名功能2023-08-08JSON.parse損壞大數(shù)字的原因解析及解決方案
從10多年前JSON在線編輯器的早期開始,用戶經(jīng)常反映編輯器有時會破壞他們JSON文檔中的大數(shù)字的問題,這篇文章主要介紹了為什么JSON.parse會損壞大數(shù)字,如何解決這個問題,需要的朋友可以參考下2022-10-10