中提到的
之后的异步运行
考虑以下代码:
eval(".....;a=5;b=10;");
eval("a+b");
如果此处的第1次评估长期运行,我的下一个评估是否会返回一个错误,因为A和B不确定,因为A和B值在第1次评估结束时初始化。eval方法会同步或异步运行
eval
本质上是同步的。但是eval
内的评估/表达式可能具有异步代码,例如setTimeout
或setInterval
。
用于实例。
方法1 :(同步示例)
eval('var a=5, b=10;');
eval('console.log(a+b)');
方法2 :(异步示例)
eval('setInterval(function(){window["a"]=5, window["b"]=10;}, 1000)');
eval('console.log(typeof a)');
注意:无论如何,不建议使用https://stackoverflow.com/a/86580/7055233
eval
eval
是同步的。
让我们查看此示例:
console.log("before")
eval("console.log('eval')");
console.log("after");
您可以看到打印是按顺序进行的。
例如,在这种情况下是异步:
console.log("before");
setTimeout(()=>console.log("asynchronous"),0)
console.log("after")