久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

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

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號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
伊人久久视频| 亚洲精品自拍| 国产欧美在线| 日韩一区二区三免费高清在线观看 | 岛国精品一区| 国产欧美日韩精品一区二区免费| 日本久久一区| 另类欧美日韩国产在线| 国产精品毛片久久久| 国产精品mv在线观看| 四季av一区二区凹凸精品| 色网在线免费观看| 在线视频观看日韩| 丝袜脚交一区二区| 国产欧美成人| 国产成人精品三级高清久久91| 国产一区二区三区不卡视频网站| 国产拍在线视频| 日韩影院在线观看| 国产精品一线| 欧美激情一区| 激情视频一区二区三区| 日本亚洲欧洲无免费码在线| 免费视频一区二区三区在线观看| 国产精品蜜芽在线观看| 伊人国产精品| 欧美aa一级| 国产一区 二区| 亚洲精品一二三区区别| 国产精品入口久久| 午夜免费一区| 国内一区二区三区| 首页欧美精品中文字幕| 麻豆精品视频在线| 爽好久久久欧美精品| 国产精一区二区| 欧美日韩少妇| 麻豆视频在线观看免费网站黄 | 美女少妇全过程你懂的久久| 日本不卡一二三区黄网| 亚洲精品国产嫩草在线观看| 亚洲美女久久| 亚洲电影在线一区二区三区| 国产精品第一| 日韩一区欧美二区| 国产日韩一区二区三免费高清| 亚洲精品一二三区区别| 亚洲精品在线a| 国产主播一区| 国产中文在线播放| 久久精品99久久久| 少妇精品久久久| 亚洲一区二区三区高清不卡| 国产一区二区三区自拍| 高清一区二区三区av| 美女尤物国产一区| 国产精品久久久一区二区| 亚洲精一区二区三区| 免费人成精品欧美精品| 久久午夜视频| 亚洲涩涩av| 亚洲免费中文| 久久三级视频| 欧美午夜精彩| 好看不卡的中文字幕| 国产精品三上| 婷婷综合一区| 国产精品欧美在线观看| 国产欧美精品| 国产精品高颜值在线观看| 日韩毛片视频| 日韩不卡免费高清视频| 久久中文视频| 蜜臀av性久久久久蜜臀aⅴ四虎| 夜夜精品视频| 日韩av一级片| 麻豆久久久久久| 国产精品a久久久久| 精品国产欧美| 亚洲先锋成人| 天堂精品久久久久| 久久久久久久久成人| 久久男人av资源站| 亚洲成人精品| 午夜电影一区| 日韩欧美中文| 日韩中文字幕区一区有砖一区| 亚洲精品极品| 国产精品毛片一区二区在线看| 亚洲先锋成人| 精品黄色一级片| 免费日韩视频| 国产欧美丝祙| 亚洲免费观看| 麻豆精品久久久| 羞羞答答国产精品www一本| 免费看久久久| 视频一区在线视频| 精品一区二区三区中文字幕| 日韩亚洲在线| 99久久亚洲精品| 国产精品白丝一区二区三区| 欧美+日本+国产+在线a∨观看| 人人爱人人干婷婷丁香亚洲| 日韩国产网站| 国产毛片久久久| 免费不卡在线观看| 超碰99在线| 欧美国产不卡| 亚洲综合色婷婷在线观看| 久久夜夜操妹子| 国产伊人久久| 国产精品欧美日韩一区| 国产亚洲在线观看| 成人羞羞视频播放网站| 久久亚洲精品中文字幕| 国产亚洲一区二区三区啪| 国产一区导航| 一区二区自拍| 蜜桃国内精品久久久久软件9| 国产91在线精品| 成人国产精品| 久久精品凹凸全集| 奇米777国产一区国产二区| 午夜性色一区二区三区免费视频| 久久av一区| 日韩制服丝袜先锋影音| 黄色成人精品网站| 视频在线观看国产精品| 蜜臀久久99精品久久久画质超高清 | 久久一区二区中文字幕| 日韩在线视频精品| 中文字幕人成乱码在线观看| 久久精品理论片| 国模大尺度视频一区二区| 日韩av一区二区三区| 国产亚洲字幕| 国产精品二区不卡| 色婷婷久久久| 亚洲一区二区av| 国产伦精品一区二区三区千人斩 | 久久影院一区| 国产真实久久| 女同性一区二区三区人了人一| 午夜日韩av| 视频一区日韩精品| 精品亚洲精品| 欧美sss在线视频| 亚州av乱码久久精品蜜桃| 午夜在线精品| 国产欧美日韩免费观看| 极品av在线| 一区二区三区网站| 国产免费av一区二区三区| 成人午夜在线| 午夜久久一区| 国产精品调教| 黄色国产精品| 国产精品久久国产愉拍| 桃色一区二区| 五月激激激综合网色播| 国产a久久精品一区二区三区| 一区视频在线| 国产色播av在线| 亚洲18在线| 免费高潮视频95在线观看网站| 视频在线观看国产精品| 亚洲欧洲美洲av| 亚洲精品福利| 美女网站一区| 中文字幕人成乱码在线观看 | 五月婷婷亚洲| 欧美日韩1区2区3区| 久久久久久美女精品| 国产免费av国片精品草莓男男| 激情偷拍久久| 桃色av一区二区| 国产精品4hu.www| 婷婷成人av| 亚洲欧美视频| 中文一区二区| 99tv成人| 久久精品国产一区二区| 亚洲精品精选| 香蕉精品999视频一区二区| 亚洲va在线| 亚洲成人精品| 在线人成日本视频| 精品国产亚洲一区二区三区在线| 亚洲va久久| 日韩区欧美区| 日韩精品电影一区亚洲| 久久午夜视频| 亚洲一级大片| 日韩精品一二三区| 丝袜国产日韩另类美女| 蜜臀精品久久久久久蜜臀| 手机精品视频在线观看| 免播放器亚洲一区| 亚洲最新av|