この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

Lightning Locker による eval() 関数の制限

Lightning Locker では、コードを動的に評価するサードパーティライブラリを使用できるように eval() 関数の使用がサポートされます。ただし、これは名前空間のグローバル範囲でのみ適用されるように制限されます。eval() 関数は、コールされたスコープ内のローカル変数にアクセスできません。

通常、eval() には 2 つの実行モードがあります。eval() を直接呼び出すと、ローカルスコープで機能します。参照経由で呼び出すと、グローバルスコープで機能します。Lightning Locker は後者のみをサポートします。

たとえば、次のコードを実行するとします。

1window.foo = 1;
2function bar() {
3  var foo = 2;
4  return eval("foo");
5}

bar() をコールすると、評価がローカルスコープで実行された場合は 2 が返され、グローバルスコープで実行された場合は 1 が返されます。ローカルスコープから変数を使用する必要がある場合は、コードをリファクタリングします。Function() を使用し、ローカル変数をパラメータとして宣言し、それを引数として渡し、return ステートメントを追加します。

1window.foo = 1;
2function bar() {
3  var foo = 2;
4  return Function("foo","return foo")(foo);
5}