2
異なるローカルスコープのデータでeval()を呼び出す方法を知りたいと思います。異なるローカルスコープでeval()を使用する
のような何か:
function doSomething() {
var y = 1;
print_and_eval('y+1');
}
function print_and_eval(data) {
print(data);
eval(data);
}
編集: - 私の場合)はevalを(使用しても安全です。これを解決策として推奨しないでください。 - 主な問題は、doSomething()にprint_and_eval()で定義されていないローカル変数があることです。評価では、 'ReferenceError:y is not defined'エラーが発生します。
js> print_and_eval('var a = {x:1}')
var a = {x:1}
js> print_and_eval('print(a.x)')
print(a.x)
typein:3012: TypeError: a is null
この場合、出力 '1'を受け取りたいとします。
AFAIK、Javascriptでこれを行う簡単な方法はありません。しかし、「ローカルスコープ」と呼ばれる別のより具体的な用語は、「バインドスコープ」または「バインディングコンテキスト」と呼ばれ、変数がバインドする値を参照します。 –
ヒントありがとう! – calquin
もっと具体的な例がありますか?関数を渡すだけで問題が解決できると確信しています(文脈で) –