JS作用域
JS没有块级作用域
在ES5以及之前的JS版本中,JS是没有块级作用域的概念的,只是在ES6之后JS才有了块级作用域。用let声明
for(var i = 0;i<5; i++){
}
console.log(i)//5
for(let j = 0;j<5;j++){
}
console.log(j)//undefind
JS的函数作用域
在JS函数内部声明的变量仅能在此函数内部使用,没有显式声明的变量会默认声明为全局变量
function fn(){
var a = 1; //a是函数内部的局部变量
b = 2; //b会默认声明为全局变量
}
fn();
console.log(a);//undefined
console.log(b);//2
利用这个特性可以将很多变量封装在函数中而不会污染全局
(function (){
var a = 1;
})()//执行一个函数而又没有任何变量声明