考虑以下代码:
eval(".....;a=5;b=10;");
eval("a+b");
如果第一次评估运行很长时间,我的下一次评估是否会返回一个错误,提到 a 和 b 未定义,因为 a 和 b 值在第一次评估结束时被初始化。 eval方法是同步运行还是异步运行
最佳答案
eval
本质上是同步的。但是 eval
中的评估/表达式可能具有异步代码,如 setTimeout
或 setInterval
。
举个例子。
方法一:(同步示例)
eval('var a=5, b=10;');
eval('console.log(a+b)');
方法二:(异步示例)
eval('setInterval(function(){window["a"]=5, window["b"]=10;}, 1000)');
eval('console.log(typeof a)');
注意:无论如何,不推荐使用https://stackoverflow.com/a/86580/7055233中提到的eval
关于javascript - Javascript "eval"是同步的还是异步的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40968060/