20200402

@xiaojingzhao

Plan

  • 你不知道的 js 下卷 -- 第二章 语法

Notes

块级作用域

  1. let 不会被声明提升 -- TDZ, temporal dead zone, 暂时性死区
{
  typeof a; // undefined
  typeof b; // TD -- Reference Error
  let b;
}
  1. const 必须有显示的初始化(声明的时候就给它附一个值)
  2. 函数的块级作用域
if (true) {
  function foo() {
    console.log(true);
  }
} else {
  function foo() {
    console.log(false);
  }
}

首先在 node 和 chrome 中都测试了这一段代码,它既没有像书里描述的,后一个 foo 会覆盖前一个 foo(函数提升),也没有出现 reference error(块级作用域)

  1. 函数默认值
let z = 1;
function foo(z = z + 1) {
  // ReferenceError z还没有初始化
  console.log(z);
}

解构

o = { a: 1, b: 2, c: 3 };
p = { a, b, c } = o;
p === o; // true

More