日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ECMAScript 2016(ES7)新特性简介

發(fā)布時間:2024/2/28 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ECMAScript 2016(ES7)新特性简介 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

簡介

自從ES6(ECMAScript 2015)在2015年發(fā)布以來,ECMAScript以每年一個版本的速度持續(xù)向前發(fā)展。到現(xiàn)在已經(jīng)是ECMAScript 2020了。

每個版本都有一些新的特性,今天本文將會講解ES7中帶來的新特性。

TC39和ECMAScript

先講一下ECMA的歷史,ECMA在于1960年4月27日成立的制造商協(xié)會,其目的是統(tǒng)一標(biāo)準(zhǔn),方便在不同的制造商之間移植。于是這個協(xié)會被命名為European Computer Manufacturers Association,簡稱ECMA。

在1994,為了體現(xiàn)ECMA協(xié)會的全球性活動,改名為歐洲標(biāo)準(zhǔn)化信息和通信系統(tǒng)協(xié)會 European association for standardizing information and communication systems。雖然名字還保留了歐洲的字樣,但是其本身已經(jīng)是一個國際性協(xié)會了。

我們大概看一下ECMA協(xié)會的會員都有哪些,優(yōu)先級最高的會員叫做Ordinary Members,基本上都是國際的大公司組成的:

然后次一級的叫做Associate Members:

可以看到里面有幾個中國的公司,說明中國已經(jīng)在世界上的規(guī)則制定方面有了一定的話語權(quán)。

TC39就是ECMA協(xié)會下屬的一個專門用來指定ECMAScript標(biāo)準(zhǔn)的委員會。TC的意思是 Technical Committees。

ECMA下屬的TC有很多個,而TC39專門就是負(fù)責(zé)ECMAScript的發(fā)展。

TC39下面又分為兩個Task groups。分別是:

  • TC39-TG1 — General ECMAScript? Language 負(fù)責(zé)ECMAScript的發(fā)展
  • TC39-TG2 — ECMAScript? Internationalization API Specification 負(fù)責(zé)ECMAScript國際化API的制定

我們知道ES5是在2009年制定的,而ECMAScript 2015 (ES6)是在2015年制定的,因為ES6包含了6年的改動,所以ES6的改動非常的大。

為了減少各大廠商對ECMA腳本的升級適應(yīng)壓力,從ES6之后,ECMA協(xié)會決定每年發(fā)一個ECMA版本。

下面給大家講解一下ECMAScript是怎么發(fā)布的。ECMAScript的發(fā)布主要分為下面的5個階段:

  • Stage 0: strawman

這是自由提交的階段,但是提交者必須是TC39 member 或者TC39 contributor。

  • Stage 1: proposal

Stage 0的strawman被TC39 review之后,就到了proposal階段。

在這個階段必須知道誰來負(fù)責(zé)這個proposal,同時需要提交這個提案的示例,API以及語義和算法的實現(xiàn)。還需要指明這個提案和現(xiàn)有的功能之間的可能沖突的地方。

如果這個提案被TC39接受了。那么表示TC39將會繼續(xù)跟進(jìn)這個提案。

  • Stage 2: draft

這個是提案的第一個版本,該提案還必須具有對該功能的語法和語義的形式化描述(使用ECMAScript規(guī)范的形式語言)。描述需要應(yīng)盡可能完整,但可以包含待辦事項和占位符。

  • Stage 3: candidate

這個階段的提案已經(jīng)大部分完成了,需要根據(jù)用戶的反饋來進(jìn)行下一步的調(diào)整。

  • Stage 4: finished

這個階段的提案已經(jīng)準(zhǔn)備被包含在下一個ECMAScript的版本中了。

ECMAScript 2016(ES7)的新特性

實際上,ECMAScript 2016(ES7)只有兩個新特性:

  • Array.prototype.includes
  • Exponentiation operator (**)

Array的新方法includes

ES7為Array添加了新的方法includes,我們看下使用的例子:

> ['a', 'b', 'c'].includes('a') true > ['a', 'b', 'c'].includes('d') false

看一下includes的定義:

Array.prototype.includes(value : any) : boolean

如果value包含在Array中,那么將會返回true,如果沒有包含則會返回false。

可以看到includes和indexOf比較類似:

arr.includes(x)

等價于:

arr.indexOf(x) >= 0

他們的區(qū)別在于,includes可以查找NaN,而indexOf不能:

> [NaN].includes(NaN) true > [NaN].indexOf(NaN) -1

另外include是不區(qū)分+0和-0的:

> [-0].includes(+0) true

我們知道JS中的數(shù)組除了Array之外,還有Typed Array,比如:

  • Int8Array
  • Uint8Array
  • Uint8ClampedArray
  • Int16Array
  • Uint16Array
  • Int32Array
  • Uint32Array
  • Float32Array
  • Float64Array
  • BigInt64Array
  • BigUint64Array

所以includes方法也適用于TypedArray:

let tarr = Uint8Array.of(12, 5, 3); console.log(tarr.includes(5)); // true

冪操作符 **

ES7引入了冪操作符 ** :

> 6 ** 2 36

上面的例子表示的是6的2次方。

x ** y 的值和 Math.pow(x, y) 是等價的。

我們看下冪操作符的基本使用:

const squared = 3 ** 2; // 9let num = 3; num **= 2; console.log(num); // 9function dist(x, y) {return Math.sqrt(x**2 + y**2); }

冪操作符的優(yōu)先級是非常高的,** > * > +

> 2**2 * 2 8 > 2 ** (2*2) 16

總結(jié)

ES7的新特性就這兩個,比較簡單,今天就介紹到這里。

本文作者:flydean程序那些事

本文鏈接:http://www.flydean.com/ecmascript-7/

本文來源:flydean的博客

歡迎關(guān)注我的公眾號:「程序那些事」最通俗的解讀,最深刻的干貨,最簡潔的教程,眾多你不知道的小技巧等你來發(fā)現(xiàn)!

總結(jié)

以上是生活随笔為你收集整理的ECMAScript 2016(ES7)新特性简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。