第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于node異步回調異常捕獲過程產生的疑惑

關于node異步回調異常捕獲過程產生的疑惑

繁星淼淼 2018-12-19 09:14:37
try{    var b = 7 ;     setTimeout(function(){console.log(b);throw new Error('異步')},2000) }catch(e){    console.log(1)    console.log(e.message) }控制臺打印結果 為7;Uncaught Error: 異步    at <anonymous>:3:48打印出了7就表示 在try執(zhí)行完了其中的代碼之后其并沒有彈棧 仍然保留了其上下文,而定時器在timer模塊中執(zhí)行完畢之后,其綁定的回調函數(shù)被放入了任務隊列,接著又被js執(zhí)行棧取出,又放入了try的作用域內(因為js函數(shù)作用域的關系,內部變量不能被外部訪問的關系,此時能拿到b的值就表示回調函數(shù)的執(zhí)行作用域在try內部 ),那么此時為什么catch并由沒有捕獲在 try內拋出的異常?
查看完整描述

1 回答

?
慕田峪9158850

TA貢獻1794條經驗 獲得超8個贊

try{    var b = 7 ;
}catch(e){    console.log(1)    console.log(e.message)
}console.log(b);

其實只有catch分句才會創(chuàng)造出塊作用域,try你把它理解成一種顯式聲明的錯誤探測機制就好。所以后邊這段語句其實已經脫離了try的探測范圍、而在異步回調里等著了,所以自然沒法觸發(fā)到catch


查看完整回答
反對 回復 2018-12-19
  • 1 回答
  • 0 關注
  • 486 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號