強力なJavaScriptのevalの()関数

定義と使用法

evalの()関数は、文字列を計算し、JavaScriptコードを実行します。

文法

eval(string)

返却値

計算値取得した文字列(もしあれば)によります。

説明

元の文字列が、この方法はそのまま返されます場合は、このメソッドは、唯一のパラメータとして、元の文字列を受け取り、パラメータ文字列ではありません。そうしてくださいではないのeval()関数は、Stringオブジェクトにパラメータとして渡されます。

あなたはevalのプロパティをカバーしようとしたりした場合のeval()メソッドは、別のプロパティを与え、そしてプロパティを呼び出し、ECMAScriptの実装は、EvalError例外をスローすることができました。

投げ出します

パラメータが正当な表現や文でない場合は、SyntaxError例外がスローされます。

違法なコールのeval()が、例外がスローされますEvalError。

例外を発生させるのeval()Javascriptコードに渡された場合は、()の異常の評価は、発信者に転送されます。

例えば

次のコードは、「警告( 『こんにちは、世界』)」文字列引数がjavaScpritのコード実行に変換し、ブラウザのプロンプト、出力 "こんにちは、世界のかもしれ

<script type="text/javascript">
    var a = "alert('Hello world')"
    eval(a)
</script>

evalの()関数は非常に強力ですが、私はそれはある程度、この動的言語のJavaScriptの利点を反映していると思います。

この機能により、開発者が増加した機能に基づいて、サードパーティ製のフロントエンドのJavaScriptライブラリのソースコードに基づいて変更、またはプログラムをさらに柔軟に機能を変更することはできません。

例えば、私は動的テーブルが小さいテーブル内のすべてのフィールドデーモンシステム、および遠位端に送信されるすべてのデータである開発、遠位端のJavaScriptコードデータを受信した後、自動的にフィールドに基づいてテーブルを生成します。しかし、私は、フォームのJSフレームワークをレンダリングする第三者(layui)を使用しています、フレームワークのコードを固定書き込む必要があり、動的に生成され、この時間のニーズを満たしていない、あなたはevalの()関数を使用することができます。

テーブルフレーム部分layui説明に短いルックれる次の

表は、書き込みヘッド部に対応するインターフェースが再生JavaScriptコードの形式でデータを指定するデータを受け取り、固定する必要があります。

如果每次需要的表格的字段都不同,列数都不一样。那么就可用eval()函数拼接代码实现了。大致实现思路是,ajax请求到表头的相关数据,javaScript代码根据这些数据自动生成符合框架要求的代码语句,然后传递到eval()函数中直接调用就可以了。非常的灵活与方便。
比如以下伪代码

<script>
    var code1 = "layui.use('table', function(){var table = layui.table;table.render({elem: '#demo',height: 312,url: '/demo/table/user/',page: true,cols: [[{"
    // ...这里根据接收到的表各个字段信息自动拼接代码,形成字符串 code2
    var code2 = "field: 'id', title: 'ID', width:80, sort: true, fixed: 'left'},{field: 'username', title: '用户名', width:80},{field: 'sex', title: '性别', width:80, sort: true},{field: 'city', title: '城市', width:80},{field: 'sign', title: '签名', width: 80},{field: 'experience', title: '积分', width: 80, sort: true},{field: 'score', title: '评分', width: 80, sort: true},{field: 'classify', title: '职业', width: 80},{field: 'wealth', title: '财富', width: 135, sort: false"
    var code3 = "}]]});});"
    var code = code1 + code2 + code3
    eval(code)
</script>

おすすめ

転載: www.cnblogs.com/Haidnor/p/12173753.html