2017-07-01 12 views
-1

このような機能を持つrunを定義することはできますか?Javascriptのチェーンスコープとコンテキスト

a = run('var x = 100;') 
    b = run('console.log(x);') // prints 100 
    c = run('y = 1;') 
    d = run('console.log(y);') // prints 1 

私が適用されます使用して、いくつかの方法を試してみましたが、同じコンテキストを渡し、関数にコンテキストを結合、再帰呼び出しなどでクロージャを返すが、私は仕事に何かを得るように見えることはできません。

+2

なぜあなたはそれをしたいですか? –

+2

本当に悪い考え – RomanPerekhrest

+1

このように思われるより根本的な問題を隠している。なぜこれが必要ですか? – Li357

答えて

1

あなたが本当にこれをしたい場合はうん、てMyLibraryが言うように、あなたはおそらく、evalをしたいです。したがって:

var run = eval; 
a = run('var x = 100;') 
b = run('console.log(x);') // prints 100 
c = run('y = 1;') 
d = run('console.log(y);') // prints 1 

と思われます。

JavaScript allows変数に関数を割り当てるため、実行変数をevalに設定できます。 evalまでは、itについて知りたい場合があります。また、コメントからわかるように、通常の関数作成での使用はしばしば推奨されません。

+0

'eval'の使用をお勧めしません。 – PeterMader

+0

私はevalを使うとウィンドウのコンテキストで実行されます。自分のコンテキストを使って、evalがそれに与える変更を保存したいと思います。 – user1194032

関連する問題