① es是js的規格嗎
准確的說:es(ECMAScript)是js(javascript)的標准。
JavaScript是語言,而ECMAScript(即ECMA-262,ECMA是歐洲計算機製造商協會)是為了規范JS而制定的標准,ECMAScript有不同版本,最近的版本是第10版,發布於2019.6。
完整的JavaScript的實現包含以下幾個部分:
核心(ECMAScript):由ECMA-262定義並提供核心功能。
文檔對象模型(DOM):提供與網頁內容交互的方法與介面。
瀏覽器對象模型(BOM):提供與瀏覽器交互的方法與介面。
可以用下面這張圖進行粗略的記憶
具體來說,ECMA-262定義了一門語言的如下部分
語法
類型
語句
關鍵字
保留字
操作符
全局對象
ECMA-262第6版,俗稱ES6、ES2015或ES Harmony(和諧版),於2015年6月發布。這一版包含了大概這個規范有史以來最重要的一批增強特性。ES6正式支持了類、模塊、迭代器、生成器、箭頭函數、期約、反射、代理和眾多新的數據類型。
DOM Level 1 在1998.10成為W3C的推薦標准。它由DOM Core 和DOM HTML兩個部分組成。DOM Core提供了一種映射XML文檔,從而方便訪問和操作文檔任意部分的方式;DOM HTML擴展了前者,並增加了特定於HTML的對象和方法。
DOM Level 2 新增了以下模塊,以支持新的介面。
DOM視圖:描述追蹤文檔不同視圖(如應用CSS樣式前後的文檔)的介面。
DOM事件:描述事件及事件處理的介面。
DOM樣式:描述處理元素CSS樣式的介面。
DOM遍歷和范圍:描述遍歷和操作DOM樹的介面。
DOM Level 3 增加了以統一的方式載入和保存文檔的方法(包含在一個叫DOM Load and Save的新模塊中),還有驗證文檔的方法(DOM Validation)。
DOM Level 4 新增Mutation Observers,替代 了Mutation Events .
BOM 主要針對瀏覽器窗口和子窗口(frame),不過人們通常會把任何特定於瀏覽器的擴展都歸在 BOM 的范疇內。 下面就是這樣一些擴展。
彈出新瀏覽器窗口的能力;
移動、縮放和關閉瀏覽器窗口的能力;
navigator對象,提供關於瀏覽器的詳盡信息;
location對象,提供瀏覽器載入頁面的詳盡信息;
screen對象,提供關於用戶屏幕解析度的詳盡信息;
performance對象,提供瀏覽器內存佔用、導航行為和時間統計的詳盡信息;
對cookie的支持;
其他自定義對象,如XMLHttpRequest和IE的ActiveXObject。
出處:《JavaScript高級程序設計(第4版)》Matt Frisbie著 李松峰譯
② 一文搞清JS、ES、TS的關系
ECMAScript是標准語言,定義了語言的語法、類型、語句、關鍵字、保留字和操作符,不局限於Web瀏覽器。
JavaScript實現了ECMAScript標准,包含ECMAScript的所有部分,以及DOM和BOM,構成了完整的實現。
TypeScript是JavaScript的超集,加入了靜態類型系統、未正式發布的ECMAScript新特性等,最終編譯為JavaScript代碼。
總結:ECMAScript是標准,JavaScript是實現,TypeScript是JavaScript的擴展。
③ js中 /[\r]/g 是什麼意思為什麼是"[]"、"/"
/[ ]/g在js中是正則表達式對象,在兩個「/」之間的部分是表達式的主體,表示要匹配的字元串;「g」表示在整個字元串中搜索。所以這段代碼中要匹配的字元串是「[ ]」所代表的字元串,其中「[]」表示字元的可選范圍。
//g是全局匹配
//中間的內容表示:匹配以=開關,後面是0或多個空格,然後是雙引號括起來的任意字元,比如:
= "any symble"
s:匹配任何空白字元,包括空格、製表符、換頁符等等。等價於 [ f v]。
:將下一個字元標記為一個特殊字元、或一個原義字元、或一個 向後引用、或一個八進制轉義符。例如,'n' 匹配字元 "n"。' ' 匹配一個換行符。序列 '\' 匹配 "" 而 "(" 則匹配 "("。
匹配除 " " 之外的任何單個字元。要匹配包括 ' ' 在內的任何字元,請使用象 '[. ]' 的模式。
(3)js關鍵字保留字擴展閱讀:
Javascript被歸類為直譯語言,因為主流的引擎都是每次運行時載入代碼並解譯。V8是將所有代碼解譯後再開始運行,其他引擎則是逐行解譯(SpiderMonkey會將解譯過的指令暫存,以提高性能,稱為實時編譯),但由於V8的核心部分多數用Javascript撰寫(而SpiderMonkey是用C++),因此在不同的測試上,兩者性能互有優劣。
與其相對應的是編譯語言,例如C語言,以編譯語言編寫的程序在運行之前,必須經過編譯,將代碼編譯為機器碼,再加以運行。
④ JS 的基本語法
JS的基本語法包括以下幾點:
表達式與語句的區別:
標識符規則:
條件語句:
break與continue語句:
標記語句:
函數聲明的標記化:
⑤ javascript中保留字和關鍵字的區別。
實質上沒有區別。
「關鍵字」就是 JS 本身已經使用了,具有一定特殊的含義,你就不能再用它們充當變數名啊方法名啊什麼的。包括(按字母排序):break、case、catch、continue、default、delete、do、else、finally、for、function、if、in、instanceof、new、return、switch、this、throw、try、typeof、var、void、while、with 等。
「保留字」實際上就是預留的「關鍵字」,意思是現在雖然現在還不是關鍵字(也就是本身還不具備特殊含義的),但是未來可能會成為關鍵字的,你一樣是不能使用它們當變數名啊方法名的。包括(按字母排序):abstract、boolean、byte、char、class、const、debugger、double、enum、export、extends、fimal、float、goto、implements、import、int、interface、long、mative、package、private、protected、public、short、static、super、synchronized、throws、transient、volatile 等。