JavaScript_javascript スキルにおける eval() 関数の使用法の詳細な説明

WBOY
リリース: 2016-05-16 15:25:54
オリジナル
1380 人が閲覧しました

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

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

文法

コードをコピーします コードは次のとおりです:

eval(文字列)

参数 描述
string 必需。要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句。

eval() 関数の使用法の詳細な説明:

この関数はあまり頻繁に使用されないかもしれませんが、場合によっては大きな効果があります。 eval() 関数の使用法を紹介します。

この関数は文字列 str をパラメータとして受け取り、この str を JavaScript コードの一部として実行できます。str の実行結果が値の場合はその値を返し、それ以外の場合は未定義を返します。パラメータが文字列でない場合は、パラメータが直接返されます。例は次のとおりです:

eval("var a=1");//声明一个变量a并赋值1。
eval("2+3");//执行加运算,并返回运算值。
eval("mytest()");//执行mytest()函数。
eval("{b:2}");//声明一个对象。
ログイン後にコピー

上記のコードでは、最後のステートメントでオブジェクトを宣言しているので、次のように、オブジェクトの外側にかっこの別の層をネストする必要があります。

コードをコピーします コードは次のとおりです:
eval("({b:2})");

上記の内容は、比較的理解しやすい eval() 関数の使い方を簡単に紹介しています。この関数で最もわかりにくいのは、そのスコープです。まず、コード例を見てみましょう。


上記のコードでは、最初のalert()関数は1をポップアップできますが、2番目の関数はxが未定義であるためエラーを報告します。
function a(){ 
 eval("var x=1"); 
 console.log(x); 
} 
a(); 
console.log(x); 
ログイン後にコピー
上記のパフォーマンスから、 eval() 関数は新しいスコープを作成せず、そのスコープはその関数が配置されているスコープであると結論付けることができます。これはすべての主流ブラウザに当てはまりますが、場合によっては eval() 関数のスコープをグローバル スコープに設定する必要があります。 もちろん eval() はグローバル スコープで使用できますが、実際のアプリケーションでは多くの場合、グローバル スコープで使用されます。 eval() 関数のスコープをグローバル スコープに設定するために必要です。この関数をグローバル スコープで使用するには、たとえば、上記のコードを次のように変換できます。



上記のコードでは、両方のalert()ステートメントは正常に1をポップアップできます。ただし、この方法は標準ブラウザでも可能ですが、IE8 および IE8 より前のブラウザでのパフォーマンスは eval() と同じであり、スコープはそれらが配置されているスコープです。現時点では、IE ブラウザーの独自の window.execScript() を使用して、IE8 および IE8 ブラウザーの問題を解決できます。すべての主要なブラウザと互換性を持たせるために、コードは次のように変更されます:
function a(){ 
 window.eval("var x=1"); 
 console.log(x); 
} 
a(); 
console.log(x); 
ログイン後にコピー


ブラウザが window.execScript() をサポートしている場合はこの関数を使用し、サポートしていない場合は window.eval() を使用すると、IE8 および IE8 以前のブラウザの問題を解決できます。
function a(){ 
 if(window.execScript){ 
  window.execScript("var x=1"); 
 } 
 else{ 
  window.eval("var x=1"); 
 } 
 console.log(x); 
} 
a(); 
console.log(x); 
ログイン後にコピー
上記の内容は、エディターで共有される JavaScript の eval() 関数の使用法を詳しく説明したものです。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!