成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院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號
日韩成人无码专区一视频| 天天躁日日躁狠狠躁2018| 中文字幕在线播放| 美女扒开裤衩让男人桶爽| 中文乱码字幕高清一区二区| 免费的看片APP| JAPANESEHD国产在线看| 太紧了夹得我的巴好爽欧美 | 蜜臀久久久久精品久久久| 丁香花在线电影小说观看| 亚洲乱码日产精品BD在| 人妻无码少妇一区二区| 精品亚洲成A人无码成A在线观看| 扒开双腿疯狂进出爽爽爽视频| AV影音先锋天堂网| 高清欧美性猛交XXXX黑人猛交| 强壮公的侵犯让我高潮不断| 厨房挺人ⅩXXX猛交| 亚洲中文久久精品无码| 婷婷久久综合九色综合| 你再躲一个试试BY深巷无酒| 精品国产成人A区在线观看| 大胆极品美軳人人体| 中文成人无码精品久久久不卡| 亚洲AV无码成人精品区浪潮AV| 人人妻人人躁人人爽精品| 另类小说激情婷婷久久| 狠狠色噜噜狠狠狠狠AV不卡| 疯狂做受XXXⅩ高潮高潮按摩| 69国产成人精品午夜福中文| 亚洲中文字幕无码中文字| 亚洲成A人片77777KKKK| 午夜天堂精品久久久久| 少妇被又大又粗又爽毛片久久黑人| 欧美熟妇精品视频网免费观看| 久久中文字幕无码专区| 久久精品国产亚洲AV麻豆软件| 国产亚洲美女精品久久久2020| 国产AV熟女一区二区三区| 差差差很疼30分钟视频| 被村长狂躁俩小时玉婷| OLDVIDEO高潮日本熟妇| SEERX性欧美| 被公侵犯肉体中文字幕电影| 锕锕锕锕锕~好深啊免费软件| 一二三四视频中文字幕| 天天摸日日摸狠狠添| 秋霞手机在线看秋免费| 娇喘潮喷抽搐高潮在线观看视频| 国产乱色精品成人免费视频| 久久AV秘 一区二区三区蜜桃| 国产麻豆一精品一AV一免费| 久久久久亚洲AV无码观看| 色翁荡息又大又硬又粗视频| 亚洲欧美日韩二三区在线| 成人爽A毛片在线视频淮北| 中国丰满熟妇XXXX性| AV成人无码无在线观看| 做I爱直播APP| 国产伦精品一区二区三区| 久久久久无码精品国产不卡| 色悠久久久久综合网伊| 亚洲一区二区三区无码国产| 国产精品久线在线观看| 国产浮力第一页草草影院| JAPANESE失禁潮喷| 2018AV无码视频在线播放| 亚洲无人区码一码二码三码区别 | 无码午夜福利视频一区| 亚洲精品卡一卡三卡四卡乱码| 亚洲成A人片在线观看无码| 挺进绝色校花的紧窄小肉| 日本亲与子乱人妻HD| 欧美精品VIDEOSEX极品| 在线 亚洲 国产 欧美| 亚洲一区二区三区香蕉| 亚洲VA久久久噜噜噜熟女8| 私人影院家庭影院| 亚洲第一AV网站| 夜夜爽一区二区三区精品| 尤物TV国产精品看片在线| 在线观看内射亲妹妹无套内射| AⅤ日本亚洲欧洲免费| 国产成本人片免费AV| 国产高潮流白浆喷水在线观看| 国产人与禽ZOZ0性伦| 国产精品天干天干在线综合| 饥渴老熟妇乱子伦视频| 狠狠躁夜夜躁人人爽超碰97香蕉| 久久99精品久久久久久久不卡| 精品人妻无码视频一区二区三区| 精品人妻大屁股白浆无码| 日本少妇情视频WWW| 甜性涩爱在线播放| 亚洲国产精品成人久久| 野花日本大全免费观看版动漫 | 波多野结衣av电影在线观看| 灌醉国产猛男GAY1069| 精品一区二区三区不卡少妇av | 免费无码又爽又刺激高潮的漫画| 欧美成人精品第一区二区三区| 日本高清在线视频WWW色| 午夜A级理论片在线播放不卡| 亚洲精品无码久久久久AV老牛| 夫目前侵犯一区二区三区| 黑人巨大猛烈捣出白浆视频在线| 亚洲国产精品一区第二页| 把老师摁在黑板上做了一节课作文| 久久综合狠狠综合久久综合88| 亚洲AV无码国产精品色午| 东北大坑续集1至60| 欧美性猛交XXXX乱大交丰满| 在线亚洲人成电影网站色WWW| 激情五月丁香六月综合AVXXXX| 色欲丰满熟妇人妻AV无码| www.comAV在线观看| 免费人成在线观看视频高潮 | 日产2021一二三四免费| 91人妻人人澡人人爽人人| 久久精品国产亚洲AV高清色欲| 无码动漫性爽XO视频在线观看不| 吃瓜爆料网不打烊| 人人妻人人澡人人| WWW.一本色道88久久爱| 女孩子手脚绑起来嘴用胶带封上| 亚洲色欲久久久综合网东京热| 国产在线精品二区| 亚洲 欧美精品SUV| 国产无人区二卡三卡四卡不见星空| 天天爽夜夜爽人人爽| 国产chinese大学生Gay| 少妇高潮XXXⅩ白浆699| 成人亚洲欧美在线观看| 欧美亚洲国产SUV| 中文无码日韩欧免费视频APP| 老牛aV无码一区二区人妻| 尹人香蕉久久99天天拍| 久久性色欲AV免费精品观看| 亚洲一区二区三区橡胶防水| 久久精品国产99精品亚洲| 亚洲AV永久无码精品无码四虎 | 十八女人毛片A级毛片水真多| АⅤ中文在线天堂| 日本人XXXX1819HD| 成人久久免费网站| 少妇性SEXBBWZⅩX| 国产日韩AV免费无码一区二区三| 亚洲AV无码一区二区乱孑伦AS| 精品国产AV无码一区二区三区| 一边摸一边叫床一边爽AV | 和人妻隔着帘子按摩中字| 亚洲日韩乱码久久久久久| 老翁的大肉蟒进进出出| 99精产国品一二三产区MBA| 秋霞人妻无码中文字幕| 国产SM残忍打屁股调教视频| 亚洲AV无码成人网站久久精品大| 精品无码人妻一区二区三区四| 在线观看成人无码中文AV天堂不 | JAPANESETUBE日本护| 少妇 精69XXXXXx白浆| 国产色欲色欲色欲.WWW| 亚洲色大18成人网站WWW在线| 蜜桃无码一区二区三区| 不卡高清AV手机在线观看| 无码人妻一区二区中文| 精品无码一区二区三区爱欲| 中文字幕丰满乱子伦无码专区| 人妻熟女AⅤ中文字幕在线看| 国产成人午夜精品影院 | 久久99久久99小草精品免视看 | 夜夜添无码试看一区二区三区| 欧美丰满熟妇性XXXX| 反差婊吃瓜爆料黑料免费| 亚洲AV无码片在线观看| 麻豆国产果冻自制传媒| 成熟丰满熟妇高潮XXXX| 亚洲AV无码一区二区三区国产| 毛豆日产精品卡2卡3卡4卡免费 | 婷婷97狠狠色综合| 久久精品国产69国产精品亚洲| 99RE热这里只有精品视频| 天天综合网网欲色| 久久狠色AV噜噜狠狠狠狠97| CAOPORN国产精品免费视频| 无码人妻一区二区三区免费手机 | 岳妇伦丰满69ⅩⅩ| 色欲天天天天天综合网| 精品综合久久久久久888蜜芽| JAPANESE日本护士HD| 性生生活20分钟免费| 毛片免费视频在线观看| 国产CHINESE男男GAY片| 一二三四五在线播放免费观看中文| 日产无人区一线二线三线最新版| 国产真人无码作爱视频免费| ASSFREE疯狂老妇熟女| 亚洲AV无码成人精品区伊人小说 | 国产精品自在线拍国产手机版 | 一本到无码AV专区无码不卡|