JavaScript -- 变量的生命周期

全局变量的作用域是全局性的,即在整个JavaScript程序中,全局变量处处都在,在哪里、任何时候都可以调用。所以其生命周期是从打开页面都是一直存在的,直到页面被关闭才会被销毁。那什么变量是全局变量呢?

1、直接使用var声明的变量

var a;
var b = 1;
console.log(window);

2、未经var声明,直接赋值的变量。

a = 0;
console.log(window);

3、for循环的 i 变量,前提是使用var声明的。

console.log(i);
for (var i = 0; i < 10; i++ ) {
    console.log(i);
}
i = 999;
console.log(i);

var a = i + 1;
for (var i = i; i <= a; i++ ) {
    console.log(i)
}
console.log(window)

运行结果:

从这个结果来看可以确定i是存在于全局window里边的,即使在第一行代码就执行打印变量i也不会报错,说明在预编译阶段已经将i放到了GO对象中并赋值为undefined; 而且当第一个for循环执行完毕后,对变量i进行赋值、运算各种操作也是可以的,都足以充分证实了for循环中的i是全局变量。

局部变量,只在函数内部起作用,作用域是局部性的,函数执行完毕时且没有形成闭包一直被存储在内存中的情况下,会被销毁;哪些变量是局部变量呢?

1、在函数内部定义的变量。

2、函数参数,这个也是局部性的,只在函数内部起作用。

猜你喜欢

转载自blog.csdn.net/joyvonlee/article/details/89216657