一尘不染

使用eval()设置全局变量

ajax

我使用设置全局变量的代码eval无法正常工作。好像根本没有调用分配,但是没有脚本错误发生。

<script type="text/javascript">

    $(function() {

        setTimeout(function() {
            eval('var x = 1;');
            alert(x);
        }, 0);
    });
</script>

<div onclick="alert(x);">Click to see 'x'</div>

页面加载后,警报将显示我的期望值。它确认x =1。但是此后,我单击div并得到了一个x未定义的JavaScript错误。如何eval正确添加此变量?

背景:上面的代码是我正在研究的项目中最少复制的示例,我们必须在AJAX响应期间执行javascript代码。eval大多数时候都能正常工作,但这会引起问题。


阅读 409

收藏
2020-07-26

共1个答案

一尘不染

Eval在本地运行,您正在设置本地变量。

要设置全局变量,请删除var

<script type="text/javascript">

    $(function() {

        setTimeout(function() {
            eval('x = 1;');
            alert(x);
        }, 0);
    });
</script>
2020-07-26