1、全局变量
全局变量:其他任何位置使用var声明的的变量,函数除外,那么这个变量就是全局变量,全局变量可以在页面的任何位置使用。
全局变量,如果页面不关闭,那么变量所占用的内存就不会释放,就会占空间,消耗内存。
var lut = 520;
console.log(lut); // 520;
2、局部变量
局部变量:在函数内部定义的变量,是局部变量,外面不能使用 。
function lut() {
var luzp = 410;
}
lut();
console.log(luzp); // luzp is not defined 报错
1.函数作用域,我们可以理解为:就是一块“地盘”,一个代码段所在的区域,他是静态的(相对于执行上下文对象),在编写代码时就确定了。
分类:全局作用域,函数作用域
作用:隔离变量,在不同的作用域下同名变量不会有冲突
除了全局作用域之外,每个函数都会创建自己的作用域,作用域在函数定义时就已经确定好的了,而不是在函数调用时确定,跟调用没关系,只有执行上下文才需要调用
作用域链会先从自身开始查找作用域内的变量,有就执行,没有就往上一层作用域链查找,直到顶端为止,如果顶端还是没有就抛出异常。
2.执行上下文与函数作用域的区别:
作用域是静态的,只要定义好了就一直存在,且不会有变化
执行上下文是动态的,调用函数时创建,函数调用完就会自动释放
3.两者之间的联系:
上下文环境(对象)是从属于所在的作用域
全局上下文环境 == 全局作用域
函数上下文环境 == 对应的函数使用域
注意:全局变量在整个HTML文档中都可以调用;
局部作用域只能在函数内可以调用;
例如
var a = 10; // 全局作用域
var b = 20;
function fun(x) { // 局部作用域
var a = 100;
var c = 200;
console.log(“fun” + a, b, c, x);
function bar(x) {
var x = 1000;
d = 300;
console.log(“bar” + x, b, c, d, x);
}
bar(20);
}
fun(50);