我有与此类似的代码。
function foo(script) {
console.log(1);
if(script) {
eval(script);
}
console.log(2);
}
foo(/* Some expression */);
console.log(3);
我希望它打印1
和3
,但跳过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);