javascriptのeval関数

635 ワード

eval関数はパラメータsを受信し、sが文字列でない場合は、直接sを返します.s文を実行します.s文の実行結果が値である場合、この値を返します.そうでなければundefinedを返します.
特に注意したいのは、オブジェクト宣言文法「{}」は値を返してはいけません.括弧で囲んで値を返します.簡単な例は以下の通りです.
var code1='"a" + 2';    //   
var code2='{a:2}';      //  
alert(eval(code1));     //->'a2'
alert(eval(code2));     //->undefined
alert(eval('(' + code2 + ')'));    //->[object Object]
        オブジェクト宣言文に対しては、実行のみで値を返すことができないことが分かります.よく使われる「{}」のようなオブジェクトステートメントを返すためには、括弧で囲んで、式に変換して、その値を返します.これはJSONを使ってAjax開発を行う基本原理の一つである.例では、2番目のalert文はundefinedで、3番目に括弧を入れて出力するのは文で表されるオブジェクトであることが明らかになっています.