首页 > 编程笔记 > JavaScript笔记 阅读:8

JavaScript局部变量和全局变量的区别(非常详细)

变量作用域是指变量的作用范围,即变量起作用的程序代码范围。在 ECMAScript 6 之前,变量的作用域分为全局作用域和局部作用域(也称函数作用域)两种。

根据作用域的不同,Javascript 中的变量可以分为全局变量和局部变量。

Javascript全局变量

全局变量是定义在所有函数之外的变量,由于 var 支持变量提升,所以 var 声明的全局变量对整个页面的 JavaScript 代码有效。

【实例】全局变量。
var a = 1; // 全局变量
function fn() {
    console.log(a);
    console.log(b);
}
var b = 2; // 全局变量
fn();
程序中在函数外定义了全局变量 a 和 b,其作用域对整个页面的 JavaScript 代码有效。在函数 fn 内部可以访问全局变量,因此调用函数 fn 会输出全局变量的值 1 和 2。在 Chrome 浏览器中的运行结果为:

1
2

Javascript局部变量

局部变量是定义在函数中的变量,其作用域为整个函数内部;函数的形参变量等同于函数内部定义的局部变量。在函数内不使用 var 声明的变量是全局变量(不建议使用)。

局部变量只能在作用域内使用,在作用域外不能使用。需要注意的是,一旦执行流程退出函数,局部变量就会被销毁,并释放空间。

如果局部变量和全局变量同名,则在函数作用域中,局部变量会覆盖全局变量。

【实例】局部变量。
var a = 1;
function fn() {
    var a = 5;
    console.log(a);
}
fn();
在 Chrome 浏览器控制台中的输出结果为:

5

程序中在函数外定义了全局变量 a,其作用域对整个页面的 JavaScript 代码有效。在函数 fn 内部定义了局部变量 a,由于同名,在函数作用域中,局部变量会覆盖全局变量,因此调用函数 fn 会输出局部变量的值 5。

总结一下,全局变量和局部变量的区别是:

相关文章