JavaScriptの動的プロパティでは、 "eval"が呼び出しコンテキストを変更します。どういう意味ですか?いくつかの例が良いでしょう。JavaScriptのevalは呼び出しコンテキストをどのように変更しますか?
3
A
答えて
4
eval
は間接的に呼び出されたときにコンテキストを変更しません。それをグローバルコンテキスト(すべての関数のデフォルトコンテキスト)に変更します。
var myObj = { a: 1 }
function someFunc() {
console.log(eval('this.a')) // 1
console.log(eval('this === myObj')) // true
var indirectEval = eval
console.log(indirectEval('this.a')) // undefined
console.log(indirectEval('this === window')) // true
}
void someFunc.call(myObj)
直接eval
コールはコンテキストを変更しません(スコープを変更しません)。
詳細は“Global eval. What are the options?”を参照してください。
3
「」変数は、コンテキストの一部であり、evalのは、それを変更します。
呼び出しコンテキストは、eval呼び出しを囲む変数です。この場合は、ブラウザの変数「a」とブラウザの「this」だけです。
var a = 1;
eval("a = 2;");
alert(a); // 2
http://jsfiddle.net/9h6n7/2/より明確である例:
function executeEval(){
eval("a = 2;");
}
var a = 1;
executeEval();
alert(a); // 2
0
私はあなたが実行コンテキストではなく、呼び出し元のコンテキストを意味すると仮定します。
これを説明するのはあまり意味がないようです.JavascriptやThe Good Partsなどを扱うオンラインの記事がたくさんあります。ここで
では、Googleで上位に来たのリンクです:http://ajax.sys-con.com/node/676031
関連する問題
- 1. Twilio JavaScriptソフトフォンクライアントをどのように呼び出しますか?
- 2. 関数の呼び出しによる呼び出しは、パラメータの元の値を変更しますか?
- 3. どのようにModalPopupExtenders javascript非表示呼び出しをキャッチしますか?
- 4. ActiveRecordはどのように 'where'を呼び出しますか?
- 5. #{ManagedBean.all}はManagedBean.getAll()をどのように呼び出しますか
- 6. 関数は呼び出されずに変数をどのように変更しましたか?
- 7. ajax呼び出しのイベントバインド - どのようにしますか?
- 8. どのようにワードプレスのストアドプロシージャを呼び出しますか?
- 9. PHP、どのようにJavaScript関数を呼び出すには?
- 10. どのようにJavaScript関数を呼び出すには?
- 11. evalがbashスクリプトファイルによって呼び出されました
- 12. このeval()呼び出しをIEで動作させるにはどうすればよいですか?
- 13. SSISでどのようにストアドプロシージャを呼び出しますか?
- 14. どのようにgetItemを呼び出しますか?
- 15. voidのコンテキストでの呼び出しの呼び出しは非推奨です
- 16. java.lang.IllegalStateException:EJBCLIENT000025:呼び出しコンテキスト
- 17. strictモードでのevalへの間接呼び出し。 xはどうなるの?
- 18. 、JavaScriptからストアドプロシージャを呼び出すしようとするとJavaScriptの呼び出しストアドプロシージャ
- 19. javascriptでデータメソッドを変更しても、ajaxがどのメソッドを呼び出すのかは変わりません。
- 20. Jestテストはどのコンテキストで呼び出されますか?
- 21. Java - 呼び出し元クラスのメソッド変数を変更するにはどうすればよいですか?
- 22. 構文エラー - グリッドからeval()を呼び出してJavascript関数を呼び出す場合
- 23. どのように私は他のクラスのJava呼び出しを呼び出します
- 24. JavaScriptのパターン:関数呼び出しのコンテキスト
- 25. メモリスタックは、バックツーバック再帰呼び出しをどのように探しますか?
- 26. JQueryでできるように、eval()を使わずにExtJS AJAX呼び出しでJavascriptを実行するにはどうすればよいですか?
- 27. Oracle、Sql Developerの別のプロシージャ内の呼び出しプロシージャはどのように呼び出されますか?
- 28. `eval`をタイムアウトに呼び出す
- 29. vsnprintf()はどのようにして安全に呼び出しますか?
- 30. unique_ptrでどのように関数呼び出し演算子を呼び出しますか?
上記の説明を読んだところからソースを追加してください。 – Starx
'eval'は呼び出しコンテキストにスコープします。いくつかのコードについては、[this](http://www.bennadel.com/blog/1926-Exploring-Javascript-s-eval-Capabilities-And-Closure-Scoping.htm)を参照してください。これは、 'eval'が呼び出されるコンテキストが、評価されるコードが実行されるコンテキストであることを意味します。 –
http://www.langnetsymposium.com/2009/talks/18-LarsBak-JavaScript.html – dalibocai