Nodejsでevalメソッドを使用する方法

WBOY
リリース: 2022-01-10 11:28:33
オリジナル
4833 人が閲覧しました

nodejs では、文字列を計算し、スクリプト コードとして実行するために eval() メソッドが使用されます。構文は「eval(string)」です。パラメータが文字列ではなく、整数または関数の場合は、 type の場合、整数または関数が直接返されます。

Nodejsでevalメソッドを使用する方法

このチュートリアルの動作環境: Windows10 システム、nodejs バージョン 12.19.0、DELL G3 コンピューター。

nodejs で eval メソッドを使用する方法

eval() 関数は、JavaScript 文字列を計算し、スクリプト コードとして実行します。

パラメータが式の場合、eval() 関数はその式を実行します。引数が Javascript ステートメントの場合、eval() は Javascript ステートメントを実行します。

構文

eval(string)
ログイン後にコピー

パラメータの説明

文字列は必須です。評価する JavaScript 式または実行するステートメントを含む、評価する文字列。

eval() メソッドのパラメータ形式

パラメータ s が文字列ではなく、整数または関数型の場合、整数または関数が直接返されます

例 1:

var x = 1;
var y = eval(x);//eval()方法返回1
var z = eval(1)//eval()方法返回1
ログイン後にコピー

例 2:

var f = eval(
          function(){
            console.log("1111");
            return 1
           }
        );
/*
eval()方法返回:
    function(){console.log("1111");return 1;}方法
*/
var s = f();//执行方法  s=1,打印日志"1111"
/**>>>>>>>>>>>>>>>**/
var ff = function(){
   console.log("1111");
   return 1;
};
var f = eval(ff);//eval()方法返回ff方法
var s = ff();//执行ff方法  s=1,打印日志"1111"
/**>>>>>>>>>>>>>>>**/
function ff(){
   console.log("1111");
   return 1;
};
var f = eval(ff);//eval()方法返回ff方法
var s = ff();//执行ff方法  s=1,打印日志"1111"
ログイン後にコピー

パラメーター s が文字列で、その文字列が式の場合、eval() メソッドは文字列 An を計算します。式の式は、式の評価結果を返します。

eval("'true'");//返回字符串"true"
eval("ture");//返回Boolean类型的true
eval("1");//返回整数1
eval("[0,1,2]");//返回数组[0,1,2]
eval("2+2");//返回整数4
eval("2+'2'");//返回字符串"22"
ログイン後にコピー

パラメータ s が文字列で、その文字列内の式が JSON 形式である場合 (このとき、JSON 形式の外側に一対のかっこを追加して囲む必要があります) JSON up)、eval() メソッドは JSON を返します。

var j = "{'aa':11,'bb':22}";
eval("("+j+")");
//返回{"aa":11,"bb":22}
eval("({'aa':11,'bb':22})");
//返回{"aa":11,"bb":22}
eval("({aa:11,bb:22})");
//js中{aa:11,bb:22}这种格式在解析时会转换成{'aa':11,'bb':22}这种格式
eval("{'aa':11,'bb':22}");
//抛出异常
ログイン後にコピー

Note

eval()メソッドの場合、上記のJSON形式も式の一種です。ただし、JSON 形式に括弧がない場合、eval() メソッドはオブジェクトを返しません。

例: eval(“{‘aa’:11,’bb’:22}”) は {‘aa’:11,’bb’:22} を返しません。

eval() メソッドは角括弧 "{}" をステートメント ブロックとして扱うためです。その後、 eval() メソッドはステートメントを実行するだけで、値を返しません (結果は例外です)。

正しい書き方は、JSON 形式の外側に括弧 "()" を追加して、強制的に JSON 形式 (式) に型変換し、JSON 値を返すことです。これは即時関数 (function(){})() と同じで、() の関数は関数を式に強制的に入れて返すというものです。

パラメータ s が文字列であり、その文字列がステートメントまたはステートメント ブロックである場合、eval() メソッドはステートメントまたはステートメント ブロックを実行し、未定義を返します

例:##

eval("var x='1';");
//返回undefined
console.log(x);
//打印字符串1
/**>>>>>>>>>>>>>>>**/
eval("var x=1;var y=2;var z=x+y;");
//返回undefined
console.log(z+"");
//打印字符串3
/**>>>>>>>>>>>>>>>**/
s = eval("function t(){alert(3)};t();");
//执行定义并调用t的方法:弹出3.并且返回undefined
console.log(s);
//打印undefined
/**>>>>>>>>>>>>>>>**/
eval("var j={sex:'男',age:27};alert(j.age);");
/*
此处的json对象不用小括号"()"括起来。因为该处是执行语句,而非计算表达式
*/
ログイン後にコピー
Note

eval() メソッドでは、ステートメントに json 形式が存在する場合、json 形式を括弧 "()" で囲む必要はありません。式内の json が囲まれている理由は、eval() が式を評価して結果を返すためです。また、 eval() はステートメントを実行するだけで、戻り値は計算しません (返される値はすべて (未定義) であるため)

ノード関連の詳細については、

nodejs チュートリアル を参照してください。

以上がNodejsでevalメソッドを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート