2

JavaScript中有一件事我无法理解。

当我们像这样声明一个变量时:

var var_Name

它称为局部变量

当我们像这样声明一个变量时:

var_Name

它称为全局变量

浏览器何时重置其值?一旦页面刷新?

我的意思是,当页面加载时,我声明了一个变量,到那时,我增加了它的值。什么时候该值将设置回它的原始初始化?当我刷新页面?或者如果它是局部变量,它会在停止使用后立即刷新,如果它是全局变量,它只会在页面刷新时刷新?

谢谢!

4

4 回答 4

3

可以从页面加载的任何文件中的任何函数访问全局变量。并且当页面重新加载时,该变量未设置,直到再次运行某些代码并为其赋值。

于 2013-03-08T14:43:53.517 回答
3

全局声明:

var_Name = 1;
// is equal to
var var_Name = 1;
// and is also equal to
window.var_Name = 1;

该变量的存在时间与窗口对象一样长。因此,在您离开/重新加载当前页面之前,它将一直可用。

只要函数运行,函数内部的局部变量就会存在:

function y(){
 var x = 1;
 console.log(typeof x !== 'undefined');
}
y();
console.log(typeof x === 'undefined');
于 2013-03-08T14:44:42.060 回答
2

Javascript 引擎不会在页面加载时维护任何变量值。因此,在页面生命周期中声明和定义的任何全局变量都将在页面重新加载时丢失。

声明的变量var仅限于定义它们的范围。对于浏览器来说,只有函数作用域和全局作用域。因此,一旦函数返回,函数中声明的局部变量将不复存在,除非它被闭包捕获(这是一个值得在 Internet 上搜索的大型主题)。

没有程序的明确操作,变量绝不会“刷新”到它们最初分配的值。它们要么在范围内,要么在范围外,当在范围内时,它们具有最后分配给它们的任何值。

值得注意的是,在函数之外执行以下操作:

var foo = 1;

仍然会创建一个全局变量,因为如果你不在函数的范围内,你就在全局范围内。

于 2013-03-08T14:44:43.967 回答
0

全局变量在所有文档上可见。局部变量仅在您定义它的块中可见。变量在其他文档上不可见。

当您刷新页面时,所有变量都是新设置的,这意味着您在保存之前不会获得任何变量的值(例如在 cookie 中或通过 ajax)。

于 2013-03-08T14:45:52.003 回答