Можно ли использовать eval для выхода из функции? - PullRequest
0 голосов
/ 31 марта 2020

У меня есть код, подобный этому.

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?

1 Ответ

1 голос
/ 31 марта 2020

Выражение throw new Error() будет работать, но вам нужно будет обернуть eval(script) и все последующие логи c в блок 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);
...