nodejs では、文字列を計算し、スクリプト コードとして実行するために eval() メソッドが使用されます。構文は「eval(string)」です。パラメータが文字列ではなく、整数または関数の場合は、 type の場合、整数または関数が直接返されます。
このチュートリアルの動作環境: 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对象不用小括号"()"括起来。因为该处是执行语句,而非计算表达式 */
nodejs チュートリアル を参照してください。
以上がNodejsでevalメソッドを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。