成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

重學(xué)前端學(xué)習(xí)筆記(二十)--try里面放return,finally還會(huì)執(zhí)行嗎?

stonezhu / 1205人閱讀

摘要:二類型執(zhí)行了但是沒有立即返回,而是先執(zhí)行了中的覆蓋了中的。普通語句執(zhí)行后,會(huì)得到為的,引擎遇到這樣的,會(huì)繼續(xù)執(zhí)行下一條語句??刂祁愓Z句分成兩部分對(duì)其內(nèi)部造成影響如。

筆記說明
重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時(shí)間開的一個(gè)專欄,每天10分鐘,重構(gòu)你的前端知識(shí)體系,筆者主要整理學(xué)習(xí)過程的一些要點(diǎn)筆記以及感悟,完整的可以加入winter的專欄學(xué)習(xí)【原文有winter的語音】,如有侵權(quán)請(qǐng)聯(lián)系我,郵箱:[email protected]。
一、引言
本文講一講 JavaScript 語句。

二、Completion 類型
// return 執(zhí)行了但是沒有立即返回,而是先執(zhí)行了finally
function kaimo(){
  try{
    return 0;
  } catch(err) {
    console.log(err)
  } finally {
    console.log("a")
  }
}

console.log(kaimo()); // a 0
// finally 中的 return 覆蓋了 try 中的 return。
function kaimo(){
  try{
    return 0;
  } catch(err) {
    console.log(err)
  } finally {
    return 1;
  }
}

console.log(kaimo()); // 1
2.1、Completion Record
Completion Record 用于描述異常、跳出等語句執(zhí)行過程。表示一個(gè)語句執(zhí)行完之后的結(jié)果,它有三個(gè)字段。

[[type]]:表示完成的類型,有 break、continue、return、throw、normal 幾種類型

[[value]]:表示語句的返回值,如果語句沒有,則是 empty

[[target]]:表示語句的目標(biāo),通常是一個(gè) JavaScript 標(biāo)簽

JavaScript 使用 Completion Record 類型,控制語句執(zhí)行的過程。

三、普通語句
JavaScript 中,把不帶控制能力的語句稱為普通語句。種類可以參考引言的圖片。

1、這些語句在執(zhí)行時(shí),從前到后順次執(zhí)行(這里先忽略 var 和函數(shù)聲明的預(yù)處理機(jī)制),沒有任何分支或者重復(fù)執(zhí)行邏輯。

2、普通語句執(zhí)行后,會(huì)得到 [[type]]normalCompletion Record,JavaScript 引擎遇到這樣的 Completion Record,會(huì)繼續(xù)執(zhí)行下一條語句。

3、在 Chrome 控制臺(tái)輸入一個(gè)表達(dá)式,可以得到結(jié)果,但是在前面加上 var,就變成了 undefined。Chrome 控制臺(tái)顯示的正是語句的 Completion Record[[value]]

四、語句塊
語句塊就是拿大括號(hào)括起來的一組語句,它是一種語句的復(fù)合結(jié)構(gòu),可以嵌套。

語句塊內(nèi)部的語句的 Completion Record[[type]] 如果不為 normal,會(huì)打斷語句塊后續(xù)的語句執(zhí)行。

1、內(nèi)部為普通語句的一個(gè)語句塊:

// 在每一行的注釋中為 Completion Record
{
    var i = 1; // normal, empty, empty
    i ++; // normal, 1, empty
    console.log(i) //normal, undefined, empty
} // normal, undefined, empty

在這個(gè)block中都是 normal 類型的話,該程序會(huì)按順序執(zhí)行。

2、加入 return

// 在每一行的注釋中為 Completion Record
{
  var i = 1; // normal, empty, empty
  return i; // return, 1, empty
  i ++;
  console.log(i)
} // return, 1, empty

block 中產(chǎn)生的非 normal 的完成類型可以穿透復(fù)雜的語句嵌套結(jié)構(gòu),產(chǎn)生控制效果。

五、控制型語句
控制型語句帶有 if、switch 關(guān)鍵字,它們會(huì)對(duì)不同類型的 Completion Record 產(chǎn)生反應(yīng)。

控制類語句分成兩部分:

對(duì)其內(nèi)部造成影響:如 if、switch、while/for、try。

對(duì)外部造成影響:如 break、continue、return、throw。

穿透就是去上一層的作用域或者控制語句找可以消費(fèi)break,continue的執(zhí)行環(huán)境,消費(fèi)就是在這一層就執(zhí)行了這個(gè)break或者continue

這兩類語句的配合,會(huì)產(chǎn)生控制代碼執(zhí)行順序和執(zhí)行邏輯的效果。

六、帶標(biāo)簽的語句

1、任何 JavaScript 語句是可以加標(biāo)簽的,在語句前加冒號(hào)即可。

    firstStatement: var i = 1;

2、類似于注釋,基本沒有任何用處。唯一有作用的時(shí)候是:與完成記錄類型中的 target 相配合,用于跳出多層循環(huán)。

    outer: while(true) {
        console.log("outer")
        inner: while(true) {
            console.log("inner1")
            break outer;
            console.log("inner2")
        }
    }
    console.log("finished")

    // outer  inner1  finished
個(gè)人總結(jié)

越看越發(fā)現(xiàn)自己菜雞。。。_(:3」∠)_

看的懂的可以看看這個(gè)https://tc39.github.io/ecma262/#sec-runtime-semantics

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/114678.html

相關(guān)文章

  • 重學(xué)前端學(xué)習(xí)筆記二十)--try里面returnfinally還會(huì)執(zhí)行?

    摘要:二類型執(zhí)行了但是沒有立即返回,而是先執(zhí)行了中的覆蓋了中的。普通語句執(zhí)行后,會(huì)得到為的,引擎遇到這樣的,會(huì)繼續(xù)執(zhí)行下一條語句??刂祁愓Z句分成兩部分對(duì)其內(nèi)部造成影響如。 筆記說明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時(shí)間開的一個(gè)專欄,每天10分鐘,重構(gòu)你的前端知識(shí)體系,筆者主要整理學(xué)習(xí)過程的一些要點(diǎn)筆記以及感悟,完整的可以加入winter的專欄學(xué)習(xí)【原文有wint...

    tolerious 評(píng)論0 收藏0
  • 重學(xué)前端學(xué)習(xí)筆記二十)--try里面return,finally還會(huì)執(zhí)行?

    摘要:二類型執(zhí)行了但是沒有立即返回,而是先執(zhí)行了中的覆蓋了中的。普通語句執(zhí)行后,會(huì)得到為的,引擎遇到這樣的,會(huì)繼續(xù)執(zhí)行下一條語句??刂祁愓Z句分成兩部分對(duì)其內(nèi)部造成影響如。 筆記說明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時(shí)間開的一個(gè)專欄,每天10分鐘,重構(gòu)你的前端知識(shí)體系,筆者主要整理學(xué)習(xí)過程的一些要點(diǎn)筆記以及感悟,完整的可以加入winter的專欄學(xué)習(xí)【原文有wint...

    frontoldman 評(píng)論0 收藏0
  • 重學(xué)前端學(xué)習(xí)筆記二十七)--JavaScript的詞法

    摘要:模板語法四種詞法定義二空白符號(hào)空白符號(hào)分類或稱是,是縮進(jìn)符,字符串中寫的。注意換行符會(huì)影響的兩個(gè)重要語法特性自動(dòng)插入分號(hào)和規(guī)則。 筆記說明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時(shí)間開的一個(gè)專欄,每天10分鐘,重構(gòu)你的前端知識(shí)體系,筆者主要整理學(xué)習(xí)過程的一些要點(diǎn)筆記以及感悟,完整的可以加入winter的專欄學(xué)習(xí)【原文有winter的語音】,如有侵權(quán)請(qǐng)聯(lián)系我,郵箱...

    jayzou 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<