是否可以使用 eval 退出函数?
Is it possible to use eval to exit a function?
我有一个类似的代码。
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);
我有一个类似的代码。
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);