TDZ是指,在当前的代码块({之间的})中,由于代码中的变量还没有被声明而不能使用的的情况,let,const

    • typeof 在TDZ中,对未声明的变量使用会报错 ReferenceRerror


      函数参数中出现TDZ

    1. var b=3;
    2. function foo(a=42,b=a+b+5){
    3. ....
    4. }

    b=a+b+5在参数b(=右边的那个b,而不是函数外面那个)的TDZ中访问b,所以会出错,访问a确实没有问题,因为此时a此时刚好跨出参数a的的TDZ

    如果参数被省略,或者传递undefined,则取该参数的默认值 vb