js函数的中作用域基本划分为两种 1 全局变量 2局部局部变量
一 全局变量
出现原因
1在函数外声明的
2没有使用 var
二局部变量
函数内声明的
三使用说明
1:遵循就近原则;
2:局部变量不适用var 直接赋值的会升级为全局变量,污染作用域;
3:局部变量使用时,遵循变量提升原则,即var 变量名会提升到函数顶部,值不会提升;
4:函数调用后直接消失,执行后面的代码;
5:js不存在块状区域;
6:函数命名不能与变量相同,不能出现相同名字的函数;
7:推荐优先使用局部变量;原因:全局变量的生命周期和页面一样,占用过多内存;局部变量使用之后直接回收,更加合理;
四 案例
1变量提升
<script>
function sum() {
if (true) {
var a = 10;
console.log(a);//a=10
console.log(b);//undefined
} else {
b = 20
}
}
sum();
</script>
等价于
<script>
function sum() {
var a, b;
if (ture) {
a = 10;
console.log(a);
console.log(b)
} else {
b = 10
}
}
</script>'
2局部与全局变量
<script>
var a = 20
function sum(a) {
console.log(a);//100
a = 30; //未定义 升级为全局变量
console.log(a);//30
}
sum(100);
console.log(a);//20 外部不能访问函数内部
</script>