2016-04-02 18 views
0

JavaScriptで次のコードの意味は何ですか?変数か文字列ですか?JavaScriptでこのステートメントの意味を教えてください:var no = eval( '"' '+ id +'" '); <code>id</code>は何ですか:私が知りたい</p> <pre><code>var no=eval('"'+id+'"'); </code></pre> <p>:

+0

大まかな推測として - 変数値を文字列に変換しています。 var no = "" + idを使う方が簡単です。 idが実際に何であるかの文脈がなければ、どんな大きな精度で何が起こっているのかを言うことは難しいです。 – jeff

+0

'id'はこれが変数であると期待されます。その値に接頭辞と接尾辞として二重引用符が与えられた場合、文字列の値はコードであるかのように評価されます。これは、 'eval()'が解析する文字列リテラルとして 'id'の値を準備しようとしているようです。 (ただし、 'var no = String(id);'は同じ結果を持ち、あなたが意図しなかったコードを呼び出す危険性はありません)。 –

+0

意味はプログラマが自分が何をしているのか分からなかったことです。 –

答えて

1

eval()は、グローバルオブジェクトの関数プロパティです。

eval()関数の引数は文字列です。文字列が式を表す場合、eval()は式を評価します。引数が1つ以上のJavaScript文を表す場合、eval()は文を評価します。算術式を評価するためにeval()を呼び出さないでください。 JavaScriptは算術式を自動的に評価します。

算術式を文字列として作成する場合は、eval()を使用して後で評価することができます。たとえば、変数xがあるとします。変数に式の文字列値、たとえば "3 * x + 2"を代入し、スクリプトの後の時点でeval()を呼び出すことによって、xに関係する式の評価を延期できます。

eval()の引数が文字列でない場合、eval()は引数をそのまま返します。次の例では、Stringコンストラクタが指定され、eval()は文字列を評価するのではなくStringオブジェクトを返します。 more details click here

+0

算術式を文字列として構成しないでください。 –

関連する問題

 関連する問題