js中的变量搜索顺序:局部变量 > 全局变量。
即先找局部变量,如果没有向外找全局变量。变量的生命周期从声明开始,局部变量在函数执行完毕后销毁,全局变量在页面关闭时销毁。全局变量的值会一直保留,除非被覆盖或销毁。
全局变量:定义在函数外部,在函数内、外都可以调用;
局部变量:定义在函数内部,只能在函数内调用。
全局变量声明方式:
- 使用var关键字 + 变量名定义在函数外部
var a = 5 // 全局变量
function test(){
console.log(a) // 5,全局变量可在函数内调用
}
- 未使用var关键字,直接给变量赋值,不管是在函数内还是函数外都是全局变量。
function test(){
a = 8 //未使用关键字var,a为全局变量
console.log(a) //8
}
console.log(a) //8, 此时a为全局变量
- 使用window全局对象来声明,全局队形的属性对应也是全局变量。
window.a = 2;
cosole.log(a) // 2, window全局对象声明全局变量
ps:
- 局部变量优先于全局变量;
- 在函数中没有使用var声明的变量都是全局变量;
- 局部变量只能在函数内部使用,函数外不能使用。