JavaScript扩展了eval()函数吗?

问题描述 投票:0回答:1

我正在尝试使用JavaScript制作自己的eval函数,该函数将在周围的上下文中执行一个字符串,例如eval,并添加一些其他内容。

因此,通常,在这样做时:

eval("var foo = 8");
foo; // === 8

没问题;但是,当我想用​​自己的函数扩展eval时,如下所示:

function myEval(str) {
    return eval(str);
}
myEval("var foo = 8");
foo; //error, "foo" is not defined etc.....

显而易见的原因是,在myEval中,调用的eval函数仅在该函数的作用域内执行,而不在周围的作用域内执行。

我想知道是否有可能在其周围函数的作用域内执行eval,以扩展JavaScript函数eval?

javascript function scope eval
1个回答
0
投票

弄清楚了,只需将eval函数包装在另一个函数中,然后在周围的范围内调用该另一个函数,如下所示:

function g(str) {
    return {
        eval,
        go(){
            this.eval(`
              //some other cool stuff
              let test = 1000;
              ${this.str}
            `)
        },
        str
    }
}
g("var pp = 3 * test").go()
console.log(pp);
© www.soinside.com 2019 - 2024. All rights reserved.