一旦控制离开脚本,JavaScript静态变量是否仍然存在?

Do JavaScript Static Variables stay present once control leaves the script?

本文关键字:是否 变量 存在 静态 JavaScript 控制 离开 脚本      更新时间:2023-09-26

我有一个关于JavaScript中的静态变量的问题。它们是否只在脚本范围内存在?我的意思是,如果控制离开脚本回到html代码,静态变量还在那里吗?

我假设您指的是全局变量而不是静态变量。全局变量在全局文档作用域中声明。它们可以从所有方法(函数)中访问,当你在函数的代码块中修改它们的值时,这个值仍然存在,因为你是在修改全局变量。

例如:

<script type="text/javascript">
    global_var = 0; // declared globally
    function global_inc(){
        global_var += 1; // global var incremented by 1
    }
    function local_inc(){
        local_var = global_var; // declared locally, and scope ends at function end.
        local_var += 1; // local var incremented by 1
        alert('global: ' + global_var);
        alert('local: ' + local_var);
    }
    function alert_global(){
        alert('global: ' + global_var);
    }
</script>
<script type="text/javascript">
    alert_global(); // alert global (0)
    global_inc(); // increment global to 1
    local_inc(); // set local to global (1) and increment local to (2), alert both
    alert_global(); // alert global (1)
</script>

你会得到:
Alert of "global: 0" from alert_global()
local_inc()的"global: 1"警告
local_inc()的"local: 2"告警
Alert of "global: 1" from alert_global()