我有以下代碼可以在一個中運行eval():const code = ` async function func() { asd(); } func();`;try { console.log("running code"); return eval(code);}catch (err) { console.log("error"); return err.message;}在這種情況下,asdis undefined,因此我希望引用錯誤作為字符串 ( return err.message;)返回。但是,不是觸發 catch 塊,而是拋出異常,就好像沒有 try/catch 塊一樣。但是,如果我要運行eval("asd()"),該catch塊將捕獲錯誤并返回一個字符串。對于嵌套函數,我需要做些什么不同的事情嗎?注意:由于其他代碼(之前const code ...),整個代碼在異步函數中,如果這有所不同的話。
JavaScript - eval 中的嵌套函數不適用于 try/catch 塊
慕少森
2021-07-09 18:04:15