作用域单元
作用域单元分为函数作用域和块作用域,使用作用域的目的是将变量单独定义在作用域内,防止变量污染,变量的声明应该距离是用地越近越好,并且最大限度的实现本地化。为什么要创建块作用域
例如代码如下:1 | if (true) { |
var
声明变量,当我们这个变量只在 if 或者 for 代码块中使用的时候,使用 var 声明变量容易造成变量污染,后续开发人员声明变量的时候还要避免声明同样的变量。使用快作用域的作用是:在代码块中被声明的变量只在代码块中使用,不会污染到全局变量。这就需要我们创建块作用域。创建块作用域的几种方式
1.try catch 语句会在 catch 语句中创建一个块作用域1 | try { |
1 | if (true) { |
let
将声明的变量隐式的绑定到 if 语句上,在外部是不可访问到的。也可以通过使用 { }
来显式的为 let
声明一个用于绑定的块:1 | if () { |
let
可以创建作用域,相对于使用 var
而言,var
会将变量定义到全局作用域中,使用 let
定义变量会被定义到隐式的块状作用域,因此,依赖变量的函数也要放到定义的块状作用域内。3.使用 const
也可以创建块状作用域,使用 const
创建的是常量,试图修改会导致错误:1 | if (true) { |
总结
使用var
定义的变量会被定义到全局变量中,使用let
可以创建块状作用域,使用let
定义的变量依赖的函数要和声明的变量放在同一个作用域;使用 {}
可以声明显式的作用域;