javascript - Javascript "eval"是同步的还是异步的?

标签 javascript

考虑以下代码:

eval(".....;a=5;b=10;");
eval("a+b");

如果第一次评估运行很长时间,我的下一次评估是否会返回一个错误,提到 a 和 b 未定义,因为 a 和 b 值在第一次评估结束时被初始化。 eval方法是同步运行还是异步运行

最佳答案

eval 本质上是同步的。但是 eval 中的评估/表达式可能具有异步代码,如 setTimeoutsetInterval

举个例子。

方法一:(同步示例)

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/

相关文章:

javascript - 对象 JavaScript

javascript - 从 svg 外部的按钮单击 d3 中的节点

javascript - 使用 PHP 或 JS 将一个 div 插入另一个

javascript - 标准包中的 CKEDITOR.replace() 错误

javascript - 弹出覆盖屏幕,可选择下面的文本

javascript - 函数(带变量)->函数->粗箭头函数->这里显示的第一个函数的变量?

javascript - jQuery 克隆表单字段消失

javascript - jQuery 获取点击类的元素而不是点击该类的每个元素

javascript - 有没有办法在 Ace 代码编辑器中查询 HTML?

javascript - 在 Angular 中路由到非 Angular 页面