ホームページ  >  記事  >  ウェブフロントエンド  >  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 の動的機能の 1 つで、js プログラムを直接実行して結果を返すことができます。一般的な用途は、json データを js オブジェクトに復元することです。


ただし、実行時にコンテキスト オブジェクトを動的に変更できるため、インジェクション攻撃のリスクが伴います。


これを使用するときは、eval が文字列の構文をどのように理解するかに注意してください。よくある問題は「中括弧」の問題です。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。