TDZ是指,在当前的代码块({之间的})中,由于代码中的变量还没有被声明而不能使用的的情况,let,const
typeof 在TDZ中,对未声明的变量使用会报错 ReferenceRerror
函数参数中出现TDZ
var b=3;
function foo(a=42,b=a+b+5){
....
}
b=a+b+5在参数b(=右边的那个b,而不是函数外面那个)的TDZ中访问b,所以会出错,访问a确实没有问题,因为此时a此时刚好跨出参数a的的TDZ
如果参数被省略,或者传递undefined,则取该参数的默认值 vb