成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網
最全最豐富的資訊網站

javascript要不要加分號

JavaScript中的分號是可選的,加不加分號主要是個代碼風格問題,但是不要一會加一會不加。通常,如果語句以“(”、“[”、“/”、“+”、“-”開頭時,有可能被解釋為上一行語句的一部分;此時可以在行首防御性的加上分號。

javascript要不要加分號

前端(vue)入門到精通課程:進入學習
API 文檔、設計、調試、自動化測試一體化協作工具:點擊使用

本教程操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。

JavaScript 中的分號是可選的,加不加分號主要是個代碼風格問題。一種風格是使用分號明確結束語句,即便這些分號不是必需的;另一種風格是盡可能的不加分號,只在必要的情況才加。

javascript要不要加分號

注:分號可以加也可以不加,但是不要一會加一會不加。

代碼中分號的作用

分號的主要作用是:作為語句的斷言(EOS)用于結束一個程序語句,目的是讓解析器正確解析程序。在很多 C-Style 語言里,用分號明確結束一行語句,主要是為了降低語言編譯器開發的成本。但是現代編譯器都足夠聰明了,可以很好的處理好多行語句。很多語言都不需要明確使用分號結尾如:Go、Scala、Ruby、Python、Swift、Groovy 等等。

雖然 JavaScript 是 C-like 語言,但它是有別于 C、Java 的,在 JavaScript 中分號也是可選的,它自動分號插入機制 Auto Semicolon Insertion (ASI)。

JavaScript 自動分號插入機制

JavaScript 有著自動分號插入的機制(Automatic Semicolon Insertion),簡稱 ASI。在ECMA-262 – Automatic Semicolon Insertion中有關 Automatic Semicolon Insertion 的明確說明:

  • 從左到右解析程序,當遇到一個不符合任何文法產生式的 token(offending token),那么只要滿足下面條件之一就在違規 token 前面自動插入分號。

至少一個換行符(LineTerminator)分割了違規 token 和前一個 token。

違規 token 是 }

  • 從左到右解析程序,tokens 輸入流已經結束,當解析器無法將輸入 token 流解析成單個完整 ECMAScript 程序 ,那么就在輸入流的結束位置自動插入分號。

  • 從左到右解析程序,遇到一個某些文法產生式允許的 token,但是它是受限操作(Restricted Productions),當至少一個換行符分割了受限的 token 和前一個 token,那么就在受限 token 前面自動插入分號。

    然而,上述規則有一個附加的優先條件:如果插入分號后解析結果是空語句,或如果插入分號后它成為 for 語句頭部的兩個分號之一,那么不會自動插入分號。

注:以上說明翻譯較為別扭可以多讀幾遍或閱讀英文原文 ECMA-262 – Automatic Semicolon Insertion

分號自動插入的情況

簡要歸納下,自動分號插入以換行為基礎,解析器會盡量將新行并入當前行,當且僅當符合 ASI 規則時才會將新行視為獨立的語句

主要有以下自動插入規則:

  • 當新的一行并入當前行將構成非法語句不能正確解析時,將自動插入分號

  • 當新行以}開頭時,即代碼塊的結束位置,將自動插入分號

  • 當以return語句結束時,在行末自動插入分號

  • 當以break語句結束時,在行末自動插入分號

  • 當以throw語句結束時,在行末自動插入分號

  • 當以continue語句結束時,在行末自動插入分號

  • 當以 ES6 的 yield 語句結尾時,在行末自動插入分號

  • ++-- 后綴表達式作為新行的開始,在行首自動插入分號

  • 源代碼文件末尾自動插入號

如上所示,如果沒加分號,運行這段代碼這段代碼將報錯。

不能省略分號的情況

通常,如果語句以([/+-開頭時,就有可能被解釋為上一行語句的一部分。實際中以/+-開頭的語句很少。但是以([開頭的語句則很常見,通常我可以在行首防御性的加上分號。

前面,我們了解分號的自動插入,現在我們來看一些示例

let hey = 'hey' ['liu','liuxing'].forEach(console.log)
登錄后復制

思考一秒鐘上面的結果是什么?運行這段代碼會拋出

Uncaught TypeError: Cannot read property 'forEach' of undefined
登錄后復制

基于規則 1 上面代碼將會被解析成如下代碼

let hey = 'hey'['liu','liuxing'].forEach(console.log)
登錄后復制

可以看出,使用[開頭的語句,前面沒有分號,很可能導致出錯。

再來看一個(開頭的語句的示例代碼

const a = 1 const b = 2 const c = a + b (a + b).toString()
登錄后復制

你會以為上面的代碼結果是“3”嗎?但是實際上它會拋出錯誤b is not a function,因為根據 ASI 規則,它會被解析成如下代碼:

const a = 1;const b = 2;const c = a + b(a + b).toString()
登錄后復制

我們就不一一介紹/, +, - 作為語句開頭的情況了,這種情況比較少,大家可以自己試試。只需要記住語句以([/+-開頭時,語句前需要加上分號即可!

下面再在看看使用return的情況,

(() => {   return   {     name: 'Liu Xing'   } })()
登錄后復制

你的期待值是不是返回一個帶有 name 的對象,但是它卻返回了undefined。這是 ASI 自動在return給加上了分號。在這兒就得正確的換行以確保代碼正確運行。我們可以看出除了正確的的分號,我們還需要正確合理的換行來使代碼結構更為清晰。

總結

我們了解了 JavaScript 的分號自動插入機制,知道了 JavaScript 什么時候會自動加入分號,在([/+-開頭時需要我們準確的加上分號。Automatic Semicolon Insertion 機制為我們提供了兩種選擇,加還是不加分號?完全看你或你的團隊的喜好了,現在我們也有prettier、Eslint 等工具來自動統一風格。

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
国产偷国产偷精品高清尤物 | 与狼共舞 电视剧| 青青草视频 成人| 青草青草久热精品视频国产4| 婷婷成人五月综合激情| 人妻夜夜爽天天爽三区丁香花 | 亚洲中文字幕精品无码AV| 又粗又大又黄又爽的免费视频| 92国产精品午夜福利免费| WWW性久久久COM| 纯肉无遮挡H肉动漫在线观看网址| 丰满人妻被黑人连续中出| 国产三级精品三级在专区| 精品久久人人妻人人做精品| 久久婷婷五月综合色99啪| 欧美老肥妇多毛XXXXX| 欧洲VODAFONEWIFI粗| 国产午夜福利精品久久| 火车上荫蒂添的好舒服视频| 久久久久精品老熟女国产精品| S货叫大点声C烂你的SB| 婷婷无套内射影院| 亚洲AV成人影视综合网| 艳妇乳肉豪妇荡乳XXX| 国产精东天美AV影业传媒 | 亚洲国产精品一区第二页| 又色又爽又黄的裸体美女图片| 69精产国品一二三产区区别| 芳芳好紧好滑好湿好爽| 狠狠色丁香婷婷久久综合| 免费A级毛片无码免费视频120| 日本适合十八岁以上的护肤品一 | 国产精品久久福利新婚之夜| 精品久久伊人99热超碰| 欧美成人精品三级网站| 忘忧草在线社区日本WWW| 亚洲综合色成在线观看| 波多野结衣无内裤护士| 狠狠色成人一区二区三区| 欧美成人精品高清视频| 无码人妻精品一区二区三区蜜桃| 一边做一边潮喷30P| 成人午夜福利视频后入| 精品国产乱码久久久久APP下载| 欧美色欧美亚洲另类二区| 午夜美女裸体福利视频| 重生之玩遍娱乐圈全文阅读| 国产精品JIZZ在线观看老狼| 麻豆AV天堂一区二区香蕉| 特黄三级又爽又粗又大| 岳今晚让我玩个够肥水一体探岳| 夫前人妻被灌醉侵犯在线| 久久人人爽人人人人片AV| 色综合久久中文综合网| 一边做一边喷17P亚洲乱妇| 风流老太婆大BBWBBWHD视| 久久人爽人人爽人人片AV| 他扒开内裤把舌头进去会有影响吗| 亚洲最大的成人网站| 国产成人精品免费午夜APP| 蜜桃视频在线观看一区二区三区| 无码H黄肉动漫在线观看| 中文字幕无码肉感爆乳在线| 国产精品永久久久久久久久久| 年轻漂亮的人妻被公侵犯BD免费版 | 中国VODAFONE粗暴| 国产熟妇人妻ⅩXXXX麻豆网站| 欧美成人精品午夜免费影视| 亚洲国产精品久久久久秋霞小 | 久久久水蜜桃国产成人网站| 人妻激情偷乱一区二区三区AV| 亚洲国产五月综合网| 成年无码AV片完整版| 久久WWW免费人成_看片中文| 熟妇人交VIDEOS复古 | 亚洲AV乱码中文一区二区三区| WWW久久久天天COM| 久久久久久久精品免费| 无码αv人妻一区二区三区| CHINA末成年VIDEOS| 久久99久久99精品免视看动漫| 天堂影院在线观看高清在线| AV网站免费线看精品| 精品免费AV一区二区三区| 天天爱天天做天天做天天吃中文| A级毛片免费无码观看、、| 久久精品国产亚洲AVAPP下载| 无码中文AV波多野结衣 | 亚洲熟女一区二区三区| 国产欧美日韩一区二区三区 | 亚洲AV无码国产在丝袜线观看| 敌伦交换第21部分正文内容| 女人无遮挡无内衣内裤网站| 嗯~啊哈好深好骚啊哼| 久久婷婷人人澡人人喊人人爽| 亚洲AV无码不卡一区二区三区| 非洲人与性动交CCOO| 欧美致敬很多经典的黑白MV| 一本大道色卡1卡2卡3乱码| 国语做受对白XXXXmp4| 婷婷蜜桃国产精品| 成 人影片免费观看| 欧美肥妇多毛BBW| 中国女人大白屁股ASS| 久久精品国产99精品国产202| 亚洲AV无码AV日韩AV网站| 国产成人无码久久久精品一 | 国产精品三级在线观看无码| 日本伦奷在线播放| 99热久RE这里只有精品小草| 日韩人妻无码精品专区综合网 | 不卡AV电影在线| 欧美人妻久久精品| 中文人妻AV高清一区二区| 久久精品午夜一区二区福利 | 日韩人妻无码一区二区三区综合部 | 无人区免费一二三四乱码| 成人欧美一区二区三区在线| 欧美又大粗又爽又黄大片视频| 中文字幕被公侵犯的漂亮人妻 | 拍国产乱人伦偷精品视频| 2023年新番肉食系| 男男激情H视频Gay片GV| 自拍偷自拍亚洲精品情侣| 免费看奶头视频的网站| 中文字幕乱码人妻一区二区三区| 鲁丝片一区二区三区免费| 在线观看日本亚洲一区| 麻豆精品一区二正一三区| 在线天堂新版最新版在线8| 六月丁香婷婷色狠狠久久| 影音先锋成人无码影院| 撩起老师旗袍挺进去玉足| 在线观看特色大片免费视频| 蜜臀AⅤ永久无码精品| 2019日韩中文字幕MV| 女人越喊男人越往里寨电视剧| AAA少妇高潮大片免费看088| 欧美日韩亚洲中文字幕二区| 爱丫爱丫影院在线观看视频| 日本另类ΑV欧美另类AⅤ| 东北粗壮熟女丰满高潮| 十八禁午夜私人在线观看影院| 国产大学生酒店在线播放 | 国产精品久久777777| 五十路熟妇无码专区| 又色又爽又黄18禁美女裸身无遮| 久久人人玩人妻潮喷内射人人| 诱女偷伦初尝云雨H| 女人被弄高潮视频免费| 爸的比老公大两倍儿媳妇叫什么呢| 日本真人无遮挡啪啪免费| 国产★蜜臀AV无码8MAV| 五月香丁激情欧美啪啪| 精品久久久久久无码人妻蜜桃| 一二三四在线观看免费高清视频 | 2020国产亚洲美女精品久久久| 欧美极品少妇XXXXⅩ高跟鞋| 成人毛片100免费观看| 天天狠天天透天干天天怕| 国内精品久久久久影院日本| 亚洲熟妇色自偷自拍另类| 男女做AJ视频免费的网站| 成人AV片无码免费网站| 无码人妻斩一区二区三区| 九九九影视电影高清全集观看| 中国少妇精品久久久久无码AV| 人妻少妇精品无码专区APP| 国产成人亚洲精品青草| 亚洲韩国精品无码一区二区| 免费A级毛片无码A∨蜜芽按摩 | 18禁黄网站禁片免费观看女女 | 爆乳女教师 高清BD| 天天看片高清观看免费| 精品国产人成亚洲区| 18禁美女黄网站色大片免费观看| 日本一二三四高清观看视频| 国产婷婷色综合AV蜜臀AV| 伊人天堂Av无码Av日韩Av| 人妻中文无码就熟专区| 国产精品无码A∨精品影院| 亚洲中文字幕在线无码一区二区| 欧美性大战XXXXX久久久√| 国产护士在线视频XXXX免费| 亚洲日韩乱码中文无码蜜桃臀| 欧美精品多人P群无码| 国产精品V欧美精品∨日韩| 亚洲中文字幕无码日韩| 亲近相奷对白中文字幕| 国产无套内射又大又猛又粗又爽 | 午夜影视啪啪免费体验区入口| 久久久久无码国产精品一区| 班主任掀开裙子让我桶的| 亚洲AV永久一区二区三区蜜桃 | 精品久久久无码中文字幕一丶| AV香港经典A毛片免费观看| 小妖精太湿太紧了拔不出| 免费看又黄又无码的网站| 国产馆AV超薄肉色丝袜| 中国BGMBGMBGM老妇网站|