JS 作用域
变量作用域通俗的意思是变量的作用范围。
- JS 局部作用域。
- JS 全局作用域。
- JS 生命周期。
JS - 局部作用域
局部变量:在函数内声明的变量。 局部作用域:作用域为这个函数。
function abc () {
var x = 10;
};
console.log(x); //控制台将会报错 not defined 未定义
局部变量只作用于函数内,因此不同的函数可以使用相同名称的变量。
函数内部可以嵌套函数,内部函数能访问外部函数定义的变量,反过来则不行。 若内外部函数变量同名,访问变量时,则为自身变量:
function abc(){
var i = 10,
y = 50;
function a(){
var x = 20,
y = 60;
console.log(i); //访问外部函数变量,结果:10
console.log(y); //相同变量名,则为自身变量 60
}
a();
console.log(y); //相同变量名,50
console.log(x); //访问内部函数变量,报错
}
abc();
JS - 全局作用域
全局变量:函数外定义的变量。 全局作用域:全局变量的作用域为网页中所有脚本和函数。
JS 默认有一个全局对象 window,全局作用域的变量实际上是被绑定到 window 的一个属性。 但是通常是直接忽略 window :
var a = 10;
console.log(a); //10
console.log(window.a); //10
如果变量在函数内没有声明(没有使用 var 关键字),该变量为全局变量:
function abc(){
a = 10;
}
abc();
console.log(a); // 10 ,a没有声明,则为全局变量
JS - 生命周期
JS 变量的生命周期开始于在它声明时。 局部变量:函数执行完毕后销毁。 全局变量:页面关闭后销毁。