变量
- 全局变量:定义的时候没有被任何括号括起来的变量,其作用域为整个文件
var i = 123;//定义i
function fun(){
i = 666;
}
fun();
console.log(i);//666
- 局部变量:定义的时候,被任何括号括起来的变量,作用域为被声明的函数体内
function fun(a,b){
var c = 123;//定义c,在函数内部,作用域为该函数体内
}
console.log(c);//报错,外部不可以访问
注意事项:
- 大量使用全局变量,会浪费内存(全局变量的生命周期,从这个页面开始开辟空间,页面结束,空间销毁,局部变量生命周期:什么时候调用该方法,开辟空间,调用结束,空间销毁)
- .降低函数的独立性(降低其复用性)
作用域链
1.当内部变量和外部变量同名时,内部变量屏蔽外部变量
var i = 123;
function fun(){
var i = 456;
console.log(i);//456
}
fun();
console.log(i);//123
2.函数嵌套时的作用域链:内部子函数可以使用外部父函数的局部变量,反之不可以
function f1(a){
var b = 2;
var f2 = function(c){
var d = 4;
console.log(a,b,c,d);//1,2,3,4
}
f2(3);
//console.log(d); //报错
}
f1(1);