是否可以使用eval退出函数



我有一个类似的代码。

function foo(script) {
console.log(1);

if(script) {
eval(script);
}

console.log(2);
}
foo(/* Some expression */);
console.log(3);

我希望它打印13,但跳过2


我试过

foo('return');

它不起作用。


我也试过

foo('throw new Error()')

但它也跳过了3


那么是否可以通过eval退出该功能?

throw new Error()表达式可以工作,但您需要将eval(script)和所有后续逻辑封装在try/catch块中:

function foo(script) {
console.log(1);

try {
if (script) {
eval(script);
}

console.log(2);
} catch(e) { }
}
foo('throw new Error()');
console.log(3);

相关内容

  • 没有找到相关文章

最新更新