是否可以使用eval退出功能?

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

我有与此类似的代码。

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退出该功能?

javascript eval
1个回答
0
投票

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);
© www.soinside.com 2019 - 2024. All rights reserved.