JSのevalはなぜ括弧をつけますか?

1063 ワード

eval概要
---evalはECMA定義においてグローバルオブジェクト原型の方法である.
---evalで受け付けたパラメータは文字列形式のjsコードです.実行エンジン(「高度なプログラム設計」を覚えていますか?それともどこで言ったか?この時に実行エンジンを新設します.)でこの文字列を実行し、結果をevalで呼び出した場所に返します.




eval  

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

 


補足:まとめ
evalはjs動特性の一つで、jsプログラムを直接実行して結果を返します.よくある使用はjsonデータを元に戻すことです.
ただし、実行時にコンテキストオブジェクトを動的に変更することができるため、注入攻撃のリスクをもたらします.
使う時、evalが文字列の文法認識に対してどのようですかに注意して、よくあるのは“大きい括弧”の問題です.