首页 > 编程笔记 > JavaScript笔记
阅读:8
JavaScript局部变量和全局变量的区别(非常详细)
变量作用域是指变量的作用范围,即变量起作用的程序代码范围。在 ECMAScript 6 之前,变量的作用域分为全局作用域和局部作用域(也称函数作用域)两种。
根据作用域的不同,Javascript 中的变量可以分为全局变量和局部变量。
【实例】全局变量。
局部变量只能在作用域内使用,在作用域外不能使用。需要注意的是,一旦执行流程退出函数,局部变量就会被销毁,并释放空间。
如果局部变量和全局变量同名,则在函数作用域中,局部变量会覆盖全局变量。
【实例】局部变量。
总结一下,全局变量和局部变量的区别是:
根据作用域的不同,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。总结一下,全局变量和局部变量的区别是:
- 全局变量只有在浏览器关闭时才会被销毁,因此比较占内存。局部变量在代码块运行结束后就会被销毁,因此更节省内存空间。
- 如果局部变量和全局变量同名,则在函数作用域中,局部变量会覆盖全局变量。