let、const、var 共同点

  1. 全局作用域中定义的变量,可以在函数中使用。
  2. 函数中声明的变量,只能在函数及其子函数中使用。
  3. 函数中声明的变量就像声明了私有领地,外部无法访问。

    var 声明变量

    使用 var 声明的变量存在于最近的函数或全局作用域中,没有块级作用域的机制。
    没有块作用域时var也会污染全局。 ```javascript for (i = 0; i < 5; i++) { console.log(i); }

// 全局作用域中也能访问到i

console.log(i);

0 1 2 3 4 5 ```

let 声明变量

var声明的区别是let/const拥有块作用域。

  • let存在块作用域特性,变量只在块域中有效。
  • 块内部是可以访问到上层作用域的变量。
  • 每一层都是独立作用域,里层作用域可以声明外层作用域同名变量,但不会改变外层变量。

    const

    使用 const 用来声明常量,这与其他语言差别不大。

  • 常量名建议全部大写

  • 只能声明一次变量
  • 声明时必须同时赋值
  • 不允许再次全新赋值
  • 可以修改引用类型变量的值
  • 拥有块、函数、全局作用域