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; 
    
})()//执行一个函数而又没有任何变量声明
原文地址:https://www.cnblogs.com/zheng-chuang/p/7203290.html