亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

淺析Javascript的自動分號插入(ASI)機制

2019-11-20 08:50:52
字體:
來源:轉載
供稿:網友

前言

相信從事過C#和Java的大家都知道分號是用作斷句(EOS,end of statement)的,而且必須加分號,否則編譯就不通過了。但JavaScript由于存在ASI機制,因此允許我們省略分號。ASI機制不是說在解析過程中解析器自動把分號添加到代碼中,而是說解析器除了分號還會以換行為基礎按一定的規則作為斷句的依據,從而保證解析的正確性。

規范理論

es5 標準定義了自動分號插入規則,包括以下三個基本規則加兩個前置條件:

前置條件

1、如果插入分號后解析結果是空語句,那么不會自動插入分號。

例子:(空語句,else 前不加分好)

if (a > b) else c = d 

2、如果插入分號后它成為 for 語句頭部的兩個分號之一,那么不會自動插入分號。

例子:(不會加分號)

for (a; b )

基本規則

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

     1、至少一個 LineTerminator 分割了違規 token 和前一個 token。

     2、違規 token 是 }。

例子:(1、2不符合任何產生式,并且之間存在 LineTerminator,因此在違規 token 2前加了分好,2和}則是因為違規 token 是 }所以加了分號)

{ 12 } 3 
{ 1;2 ;} 3;

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

對于受限產生式,也就是下面的5個,我們把產生式 [no LineTerminator here]后面的 token 叫做受限 token,如果在 token 和 受限 token 間存在了至少一個 LineTerminator,那么會在受限 token 前自動加上 token。

受限的產生式只限如下5個:

PostfixExpression : 

LeftHandSideExpression [no LineTerminator here] ++ LeftHandSideExpression [no LineTerminator here] -- 

ContinueStatement : 

continue [no LineTerminator here] Identifier; 

BreakStatement : 

break [no LineTerminator here] Identifier; 

ReturnStatement : 

return [no LineTerminator here] Expression; 

ThrowStatement : throw [no LineTerminator here] Expression; 

歸納

避免 ASI 帶來的問題

     1、后綴運算符 ++ 或 -- 和它的操作數應該出現在同一行。

     2、return throw 語句的表達式開始位置應該和 return throw token 同一行。

     3、break 或 continue 語句的標示符應該和 break continue token 同一行。

何時加分號

無分號黨(懶人黨)想要不加分號,那么就需要知道什么時候應該要加分號。網上的一篇文章歸納了 NO ASI 并且會出現錯誤的幾種情況,在這幾種情況下我們是要加分號的。下面是對應的描述:

在以 ([/+- 開頭的語句前加分號(由于正常寫法均不會出現以 .,*% 作為語句開頭,因此只需記住前面5個即可,你看能懶則懶哦)

不過這里只考慮了換行的情況,其實 ASI 還存在不換行的情況,這就要根據標準里的三條規則行事了!

知道了這點,其實我們就可以省略大部分的分號了。但是也不強求,因為這還是要根據個人習慣以及團隊風格走的。

小補充

為什么自執行函數前要加分號?

主要是應對代碼合并壓縮時,由于缺少分號;帶來的錯誤。知道了上面的規則,在 ( 開頭的行前加分號就可以避免錯誤了。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲第一色中文字幕| 国产精品久久国产精品99gif| 九九精品视频在线观看| 久久99精品视频一区97| 亚洲一区二区国产| 亚洲精品一区在线观看香蕉| 亚洲第一福利网站| 日韩欧美aaa| 亚洲欧美日韩另类| 亚洲精品一区二区在线| 欧美精品久久一区二区| 国产精品美女av| 色老头一区二区三区| 亚洲精品第一页| 在线看日韩欧美| 日韩电影免费观看中文字幕| 日韩av网站大全| 亚洲国产精品人人爽夜夜爽| 日韩在线观看网站| 日韩一区二区福利| 夜夜嗨av一区二区三区免费区| 国产精品无码专区在线观看| 国产亚洲精品成人av久久ww| 精品国产成人av| 91免费看片网站| 国产精品久久久久久久7电影| 国产精品久久久久久av下载红粉| 亚洲老头同性xxxxx| y97精品国产97久久久久久| 8x拔播拔播x8国产精品| 成人免费视频在线观看超级碰| 欧美—级a级欧美特级ar全黄| 91免费人成网站在线观看18| 在线看欧美日韩| 亚洲欧美成人网| 亚洲在线免费看| 国产精品黄页免费高清在线观看| 午夜免费在线观看精品视频| 亚洲第一天堂av| 91爱爱小视频k| 日本精品一区二区三区在线播放视频| 日韩高清av一区二区三区| 日韩大片在线观看视频| 岛国av一区二区| 亚洲免费电影在线观看| 亚洲成人av中文字幕| 亚洲国产成人爱av在线播放| 97av在线视频免费播放| 欧美丰满老妇厨房牲生活| 国产精品美女呻吟| 欧美夫妻性生活xx| 九九久久久久99精品| 色婷婷av一区二区三区在线观看| 91在线视频精品| 国产情人节一区| 日韩欧美aaa| 成人美女av在线直播| 26uuu国产精品视频| 丁香五六月婷婷久久激情| 欧美国产日韩中文字幕在线| 亚洲国产精品成人av| 国产视频精品一区二区三区| 亚洲精品小视频在线观看| 国产视频欧美视频| 激情亚洲一区二区三区四区| 久久天天躁狠狠躁夜夜爽蜜月| 欧美成人免费全部| 欧美午夜无遮挡| 91久久精品国产91久久| 欧美激情视频三区| 欧美亚洲视频在线看网址| 国模私拍一区二区三区| 亚洲欧美福利视频| 欧美疯狂性受xxxxx另类| 日韩福利伦理影院免费| 高清日韩电视剧大全免费播放在线观看| 中文字幕在线看视频国产欧美| 国产亚洲精品成人av久久ww| 亚洲福利视频免费观看| 精品国产乱码久久久久久天美| 国产午夜精品理论片a级探花| 欧美成人中文字幕| 欧美黄色片在线观看| 日韩精品丝袜在线| 欧美一区第一页| 国产亚洲精品成人av久久ww| 性视频1819p久久| 欧美高清在线观看| 欧美成人在线免费视频| 亚洲精品网址在线观看| 1769国内精品视频在线播放| 成人黄色免费在线观看| 亚洲国产私拍精品国模在线观看| 不卡毛片在线看| 国产国产精品人在线视| 国产日韩在线观看av| 精品一区精品二区| 91精品久久久久久久久久久| 草民午夜欧美限制a级福利片| 日本不卡视频在线播放| 蜜臀久久99精品久久久无需会员| 国产精品丝袜白浆摸在线| 日韩亚洲精品视频| 一区二区三区四区在线观看视频| 97国产真实伦对白精彩视频8| 国产丝袜精品视频| 色777狠狠综合秋免鲁丝| 亚洲综合在线中文字幕| 欧美精品videos| 影音先锋欧美精品| 国产在线精品一区免费香蕉| 欧美日韩一区二区三区在线免费观看| 久久久精品网站| 国产在线观看不卡| xxav国产精品美女主播| 国产99视频精品免视看7| 亚洲欧美一区二区精品久久久| 九九久久久久99精品| 亚洲欧美在线第一页| 亚洲欧洲中文天堂| 亚洲无限av看| 欧美日韩一区二区免费在线观看| 91成人在线观看国产| 茄子视频成人在线| 欧美一区二区三区四区在线| 精品日本美女福利在线观看| 国产一区二区三区18| 国产不卡视频在线| 久久影视电视剧免费网站| 18一19gay欧美视频网站| 欧美成人中文字幕在线| 日韩欧中文字幕| 日韩av三级在线观看| 欧美日韩一区二区精品| 国产激情久久久| 亚洲欧美日韩图片| 亚洲欧美国产精品专区久久| 国产性色av一区二区| 欧美极品美女电影一区| 久久成年人视频| 欧美激情精品久久久久| 亚洲尤物视频网| 国内精品久久久久影院 日本资源| 2019中文字幕在线| 奇米4444一区二区三区| 亚洲男人天堂网站| 97超级碰在线看视频免费在线看| 久久久爽爽爽美女图片| 欧美多人乱p欧美4p久久| 久久精品电影网站| 欧美片一区二区三区| 国产精品99久久久久久久久| 久久免费国产视频| 国产精品自产拍在线观| 成人网页在线免费观看| 久久久成人精品| 国产精品日日做人人爱| 88国产精品欧美一区二区三区| 国产精品第2页| 成人精品视频99在线观看免费| 亚洲免费伊人电影在线观看av| 欧美丰满少妇xxxxx做受| 久久综合久久美利坚合众国| 91日韩在线视频|