varx=1;functionfoo(x=x){//...}foo()//ReferenceError:xisnotdefined上面代碼中,參數x=x形成一個單獨作用域。實際執行的是letx=x,由于暫時性死區的原因,這行代碼會報錯”x未定義“。以上是阮一峰老師的教程內容http://es6.ruanyifeng.com/#do...想請教一個問題,如果是let聲明的話,那么為什么如果在函數體內用var重復聲明變量x沒有報錯呢?一旦設置了參數的默認值,函數進行聲明初始化時,參數會形成一個單獨的作用域(context)。等到初始化結束,這個作用域就會消失。這種語法行為,在不設置參數默認值時,是不會出現的。如果是這個原因,那么為什么用let重復聲明就會報錯呢,畢竟是不同的作用域-------------------分隔線-------------------呃,非常感謝大家的回答,我理解什么是let的暫時性死區。。我不明白的是,為什么說函數參數是let聲明的
請問函數參數聲明是let聲明的嗎?
開心每一天1111
2019-05-10 15:17:02
