2013-03-08 4138 views
2

JavaScript中有一件事我无法理解。Javascript变量初始化

当我们声明一个变量是这样的:

var var_Name 

局部变量

当我们声明一个变量是这样的:

var_Name 

全局变量

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

我的意思是,当页面加载时,我声明一个变量,并在那个时候增加它的值。当这个值要回到它的初始化初始值时?当我刷新页面?或者如果它是一个本地变量它停止使用后马上刷新,如果它是全局变量它只刷新页面时刷新?

谢谢!

+0

我相信页面加载不会影响变量 – Jacob 2013-03-08 14:45:33

+1

@Jacob:这是不正确的。请参阅 – Dancrumb 2013-03-08 14:47:04

+1

全球范围内的答案仅表示其可用于所有文件和功能,本地仅限于声明的位置。变量只是保存你给它的数据,它们不会像会话或持久数据那样工作,所以在重新加载之后它们将会消失,直到给出一些数据以保存新实例 – ashley 2013-03-08 14:48:21

回答

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'); 
+0

谢谢!这个例子是完美的,因为我在C#,Java,VB.NET编程,所以我明白你想说什么。 谢谢! – kfirba 2013-03-08 14:47:18

3

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

2

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

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

没有指向变量'刷新'到他们最初分配的值,没有程序的明确行为。他们要么在范围内,要么在范围之外,在范围之内,他们拥有最后分配给他们的任何价值。

值得一提的是执行以下功能之外:

var foo = 1; 

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

+0

感谢您的锐利解释! – kfirba 2013-03-08 14:50:59

0

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

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