考虑以下代码:
eval(".....;a=5;b=10;");
eval("a+b");
如果这里第一个 eval 运行很长时间,我的下一个 eval 是否会返回一个错误,指出 a 和 b 未定义,因为 a 和 b 值在第一个 eval 结束时初始化。 eval方法是同步运行还是异步运行
eval
本质上是同步的。但是里面的求值/表达式eval
可能有异步代码,例如setTimeout
or setInterval
.
举个例子。
Method 1:(同步示例)
eval('var a=5, b=10;');
eval('console.log(a+b)');
Method 2:(异步示例)
eval('setInterval(function(){window["a"]=5, window["b"]=10;}, 1000)');
eval('console.log(typeof a)');
Note: 总之不建议使用eval
如中提到的https://stackoverflow.com/a/86580/7055233 https://stackoverflow.com/a/86580/7055233
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)