摘要:一自動插入分號規(guī)則三條規(guī)則要有換行符,且下一個符號是不符合語法的,那么就嘗試插入分號。有換行符,且語法中規(guī)定此處不能有換行符,那么就自動插入分號。源代碼結(jié)束處,不能形成完整的腳本或者模塊結(jié)構(gòu),那么就自動插入分號。
筆記說明
重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時(shí)間開的一個專欄,每天10分鐘,重構(gòu)你的前端知識體系,筆者主要整理學(xué)習(xí)過程的一些要點(diǎn)筆記以及感悟,完整的可以加入winter的專欄學(xué)習(xí)【原文有winter的語音】,如有侵權(quán)請聯(lián)系我,郵箱:kaimo313@foxmail.com。一、自動插入分號規(guī)則 1.1、三條規(guī)則
要有換行符,且下一個符號是不符合語法的,那么就嘗試插入分號。
有換行符,且語法中規(guī)定此處不能有換行符,那么就自動插入分號。
源代碼結(jié)束處,不能形成完整的腳本或者模塊結(jié)構(gòu),那么就自動插入分號。
1.2、例子//第一行的結(jié)尾處有換行符,接下來 void 關(guān)鍵字接在 1 之后是不合法的,根據(jù)第一條規(guī)則,會在 void 前插入換行符。 let a = 1 void function(a){ console.log(a); }(a);
// 根據(jù)no LineTerminator here 規(guī)則, a 的后面就要插入一個分號。 var a = 1, b = 1, c = 1; a ++ b ++ c // a ==> 1 b,c ==> 21.3、例子 no LineTerminator here 規(guī)則展示
UpdateExpression[Yield, Await]: LeftHandSideExpression[?Yield, ?Await] LeftHandSideExpression[?Yield, ?Await][no LineTerminator here]++ LeftHandSideExpression[?Yield, ?Await][no LineTerminator here]-- ++UnaryExpression[?Yield, ?Await] --UnaryExpression[?Yield, ?Await]1.4、IIFE(立即執(zhí)行的函數(shù)表達(dá)式)
(function(){ console.log(1); })() (function(){ console.log(2); })() // 不加分號,輸出結(jié)果 // 1 Uncaught TypeError: (intermediate value)(...) is not a function (function(){ console.log(1); })(); (function(){ console.log(2); })() // 加分號,輸出結(jié)果 // 1 2 // 關(guān)于這個問題,遇到過,當(dāng)時(shí)排查幾十分鐘 _(:3」∠)_ , 由于我之前的是有換行,還有注釋,當(dāng)時(shí)一直不理解,類似下面這樣 (function(){ console.log(1); })() // 處理。。。業(yè)務(wù) (function(){ console.log(2); })()1.5、帶換行符的注釋
// 帶換行符的注釋也被認(rèn)為是有換行符,return 也有 [no LineTerminator here] 規(guī)則的要求,這里會自動插入分號 function f(){ return/* This is a return value. */1; } f(); // undefined二、no LineTerminator here 規(guī)則
no LineTerminator here 規(guī)則表示它所在的結(jié)構(gòu)中的這一位置不能插入換行符。2.1、帶標(biāo)簽的 continue 語句
// 不能在 continue 后插入換行。 outer:for(var j = 0; j < 10; j++) for(var i = 0; i < j; i++) continue /*no LineTerminator here*/ outter2.2、return
function f(){ return /*no LineTerminator here*/1; }2.3、后自增、后自減運(yùn)算符
i/*no LineTerminator here*/++ i/*no LineTerminator here*/--2.4、throw 和 Exception 之間
throw/*no LineTerminator here*/new Exception("error")2.5、async 關(guān)鍵字
// 后面都不能插入換行符 async/*no LineTerminator here*/function f(){ } const f = async/*no LineTerminator here*/x => x*x2.6、箭頭函數(shù)
// 箭頭函數(shù)的箭頭前,也不能插入換行 const f = x/*no LineTerminator here*/=> x*x2.7、yield
// yield 之后,不能插入換行 function *g(){ var i = 0; while(true) yield/*no LineTerminator here*/i++; }三、不寫分號需要注意的情況 3.1、以括號開頭的語句
(function(a){ console.log(a); })()/* 這里沒有被自動插入分號 */ (function(a){ console.log(a); })()3.2、以數(shù)組開頭的語句
var a = [[]]/* 這里沒有被自動插入分號 */ [3, 2, 1, 0].forEach(e => console.log(e))3.3、以正則表達(dá)式開頭的語句
// 正則邊除號 var x = 1, g = {test:()=>0}, b = 1/* 這里沒有被自動插入分號 */ /(a)/g.test("abc") console.log(RegExp.$1)3.4、以 Template 開頭的語句
// 沒有自動插入分號,函數(shù) f 被認(rèn)為跟 Template 一體的,會被執(zhí)行。 var f = function(){ return ""; } var g = f/* 這里沒有被自動插入分號 */ `Template`.match(/(a)/); console.log(RegExp.$1)個人總結(jié)
表示跟winter一樣,也是標(biāo)分號黨。。。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/104497.html
摘要:一自動插入分號規(guī)則三條規(guī)則要有換行符,且下一個符號是不符合語法的,那么就嘗試插入分號。有換行符,且語法中規(guī)定此處不能有換行符,那么就自動插入分號。源代碼結(jié)束處,不能形成完整的腳本或者模塊結(jié)構(gòu),那么就自動插入分號。 筆記說明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時(shí)間開的一個專欄,每天10分鐘,重構(gòu)你的前端知識體系,筆者主要整理學(xué)習(xí)過程的一些要點(diǎn)筆記以及感悟,完整...
摘要:一自動插入分號規(guī)則三條規(guī)則要有換行符,且下一個符號是不符合語法的,那么就嘗試插入分號。有換行符,且語法中規(guī)定此處不能有換行符,那么就自動插入分號。源代碼結(jié)束處,不能形成完整的腳本或者模塊結(jié)構(gòu),那么就自動插入分號。 筆記說明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時(shí)間開的一個專欄,每天10分鐘,重構(gòu)你的前端知識體系,筆者主要整理學(xué)習(xí)過程的一些要點(diǎn)筆記以及感悟,完整...
摘要:模板語法四種詞法定義二空白符號空白符號分類或稱是,是縮進(jìn)符,字符串中寫的。注意換行符會影響的兩個重要語法特性自動插入分號和規(guī)則。 筆記說明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時(shí)間開的一個專欄,每天10分鐘,重構(gòu)你的前端知識體系,筆者主要整理學(xué)習(xí)過程的一些要點(diǎn)筆記以及感悟,完整的可以加入winter的專欄學(xué)習(xí)【原文有winter的語音】,如有侵權(quán)請聯(lián)系我,郵箱...
閱讀 2686·2021-09-22 15:58
閱讀 2230·2019-08-29 16:06
閱讀 898·2019-08-29 14:14
閱讀 2810·2019-08-29 13:48
閱讀 2451·2019-08-28 18:01
閱讀 1495·2019-08-28 17:52
閱讀 3318·2019-08-26 14:05
閱讀 1610·2019-08-26 13:50