Javascript链接范围和上下文

时间:2017-07-01 16:37:33

标签: javascript

是否可以定义一个像这样的函数run

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

我尝试了几种方法,使用apply并传递相同的上下文,将上下文绑定到函数,返回带有递归调用的闭包等,但我似乎无法使用任何东西。

2 个答案:

答案 0 :(得分: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将函数赋值给变量,因此可以将run变量设置为eval。就eval而言,您可能想要了解it,正如您从评论中看到的那样,它通常不鼓励在正常函数创建中使用它。

答案 1 :(得分:0)