光速掌握 作用域里的let、var的区别

432 阅读7分钟

作用域是可以访问变量的集合,个人喜欢把它理解为变量的生存环境

JS里的作用域可以分为 : 1.全局作用域  ** 2.局部作用域**  3.块级作用域

这里简单说明一下:

全局作用域 是 0级作用域 在全局作用域中设置的变量就被称之为 全局变量

局部作用域 只要我们设置里一个函数 则函数 { } 内部 就是我们的 局部作用域  ,我们每设置一个新的函数,实际上就开辟了一个新的局部作用域

块级作用域 在ES6中只要 { } 没有和函数相结合,那就是我们的块级作用域

重点:

var 在 单独的 { } 中声明的变量,是一个全局变量

let 在 单独的 { } 中声明的变量 , 是一个局部变量

也就是说在块级作用域下,var声明的变量是全局变量 , let声明的变量是局部变量

example:

    var b = 2
    let a = 0
}
console.log(b)
console.log(a)

                       

而在局部作用域下 var、let 声明的变量都是局部变量

function xx(){              
    var a = 0             
 }
xx()
console.log(a)

                     

最后,无论是块级作用域还是局部作用域,省略变量前面的let或者var就会变成一个全局变量