javascript basic concept (js最基础的一些概念) - archering/basic GitHub Wiki

ES6(ecma-262 的第六次变更,所有以前按照惯例称为es6) == ECMAScript2015

JavaScript的官方新版本将按照ECMAScript+年份的形式发布

const 常量是块级作用域;此声明创建一个常量,其作用域可以是全局或本地声明的块。 与var变量不同,全局常量不会变为窗口对象window(最顶层对象global)的属性。声明后必须立即初始化,初始化后不能修改。

let 声明一个作用域被限制在块级中的变量、语句或者表达式。与var关键字不同的是,它声明的变量只能是全局或者整个函数块的; 和var 不同,像if-else ,function, switch 这样的块都可以阻断let声明变量的延续,let并不会像var一样在全局对象上创造一个属性。不会声明前置。

function varTest() {
  var x = 1;
  if (true) {
    var x = 2;  // 同样的变量!
    console.log(x);  // 2
  }
  console.log(x);  // 2
}

function letTest() {
  let x = 1;
  if (true) {
    let x = 2;  // 不同的变量
    console.log(x);  // 2
  }
  console.log(x);  // 1

var 函数作用域,会声明前置,会给全局对象window创建属性。

块状作用域的可视化理解 :块语句(或其他语言的复合语句)用于组合零个或多个语句。该块由一对__大括号__界定,可以是labelled:

let x = 1;
{
  let x = 2;
}
console.log(x); // 输出 1
⚠️ **GitHub.com Fallback** ⚠️