亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    es2017是es6還是es8

    es2017是es8。es全稱“ECMAScript”,是根據(jù)ECMA-262標(biāo)準(zhǔn)實(shí)現(xiàn)的通用腳本語言,而由2017年6月正式發(fā)布的版本,其正式名為ECMAScript2017(ES2017),因其是ECMAScript的第8個(gè)版本,因此可簡稱為es8。

    es2017是es6還是es8

    前端(vue)入門到精通課程:進(jìn)入學(xué)習(xí)
    Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調(diào)試工具:點(diǎn)擊使用

    本教程操作環(huán)境:windows7系統(tǒng)、ECMAScript 6版、Dell G3電腦。

    “es”簡介

    es全稱“ECMAScript”,是根據(jù) ECMA-262 標(biāo)準(zhǔn)實(shí)現(xiàn)的通用腳本語言,ECMA-262 標(biāo)準(zhǔn)主要規(guī)定了這門語言的語法、類型、語句、關(guān)鍵字、保留字、操作符、對象等幾個(gè)部分。每次看到 ES 后面跟著數(shù)字,是 ECMAScript 的不同版本。

    es8/ ES2017

    es8全稱ECMAScript8(ECMAScript的第8個(gè)版本),是于2017年6月正式發(fā)布的JavaScript語言的標(biāo)準(zhǔn),正式名為ECMAScript 2017(ES2017)。

    與 ES6 相比,ES8 是 JavaScript 的一個(gè)小版本,但它仍然引入了非常有用的功能:

    • 字符串填充(padStart 和 padEnd)

    • Object.values

    • Object.entries

    • Object.getOwnPropertyDescriptors()

    • 函數(shù)參數(shù)列表和調(diào)用中的尾隨逗號

    • Async Functions (異步函數(shù))

    • 共享內(nèi)存 和 Atomics

    字符串填充(padStart 和 padEnd)

    字符串填充的目的是 向字符串添加字符,使字符串達(dá)到指定的長度。

    ES2017引入了兩個(gè) String 方法:padStart()padEnd()

    JavaScript 代碼:

    padStart(targetLength [, padString]) padEnd(targetLength [, padString])
    登錄后復(fù)制

    簡單的使用:

    es2017是es6還是es8

    Object.values()

    這個(gè)方法返回一個(gè)包含所有對象自身屬性值的數(shù)組。

    使用:

    JavaScript 代碼:

    const person = { name: 'Fred', age: 87 } Object.values(person) // ['Fred', 87]
    登錄后復(fù)制

    Object.values() 也適用于數(shù)組:

    JavaScript 代碼:

    const people = ['Fred', 'Tony'] Object.values(people) // ['Fred', 'Tony']
    登錄后復(fù)制

    Object.entries()

    這個(gè)方法返回一個(gè)包含所有對象自身屬性的數(shù)組,作為 [key,value] 對的數(shù)組。

    使用:

    JavaScript 代碼:

    const person = { name: 'Fred', age: 87 } Object.entries(person) // [['name', 'Fred'], ['age', 87]]
    登錄后復(fù)制

    Object.entries() 也適用于數(shù)組:

    JavaScript 代碼:

    const people = ['Fred', 'Tony'] Object.entries(people) // [['0', 'Fred'], ['1', 'Tony']]
    登錄后復(fù)制

    Object.getOwnPropertyDescriptors()

    此方法返回對象的所有自有(非繼承的)屬性描述符。

    JavaScript 中的任何對象都有一組屬性,每個(gè)屬性都有一個(gè)描述符。

    描述符是屬性(property) 的一組特性(attributes),它由以下的子集組成:

    • value:屬性的值
    • writabletrue 表示改屬性可以被修改
    • get:屬性的 getter 函數(shù),在讀取屬性時(shí)調(diào)用
    • set:屬性的 setter 函數(shù),在屬性設(shè)置值時(shí)調(diào)用
    • configurable:如果為 false ,則不能刪除屬性,也不能更改任何屬性,但值除外
    • enumerable:如果屬性是可枚舉的,則為 true

    Object.getOwnPropertyDescriptors(obj) 接受一個(gè)對象,并返回一個(gè)帶有描述符集的對象。

    這個(gè)方法有什么用?

    ES2015 給我們帶來了 Object.assign() 方法,它從一個(gè)或多個(gè)對象復(fù)制所有可枚舉的屬性,并返回一個(gè)新對象。

    但是存在問題,它無法正確復(fù)制具有非默認(rèn)特性(attribute) 的屬性 (property)(getter,setter,不可寫屬性,等)。

    如果一個(gè)對象只有一個(gè) setter ,則無法使用 Object.assign() 正確地復(fù)制到一個(gè)新對象。

    例如:

    JavaScript 代碼:

    const person1 = {     set name(newName) {         console.log(newName)     } }
    登錄后復(fù)制

    以下代碼將不起作用:

    JavaScript 代碼:

    const person2 = {} Object.assign(person2, person1)
    登錄后復(fù)制

    但下面的代碼就會奏效:

    JavaScript 代碼:

    const person3 = {} Object.defineProperties(person3,   Object.getOwnPropertyDescriptors(person1))
    登錄后復(fù)制

    您可以通過簡單的控制臺測試,將會看到:

    JavaScript 代碼:

    person1.name = 'x' "x"   person2.name = 'x'   person3.name = 'x' "x"
    登錄后復(fù)制

    person2 丟失了 setter ,因?yàn)樗鼪]有復(fù)制過來。

    使用 Object.create() 對淺拷貝對象也有同樣的限制。

    函數(shù)參數(shù)列表和調(diào)用中的尾隨逗號

    此功能允許在函數(shù)聲明和函數(shù)調(diào)用中使用尾隨逗號:

    JavaScript 代碼:

    const doSomething = (var1, var2,) => {   //... } doSomething('test2', 'test2',)
    登錄后復(fù)制

    這一變化將鼓勵開發(fā)人員停止丑陋的“行以逗號開頭”的習(xí)慣。

    Async Functions (異步函數(shù))

    ES2017 引入了 Async Functions (異步函數(shù)) 的概念,這是 ECMAScript 版本中引入的最重要的變化。

    Async Functions (異步函數(shù)) 是 promises 和 generators(生成器) 的組合,以簡化 promises 調(diào)用,提過代碼的可讀性,但是不打破 promises 鏈?zhǔn)秸{(diào)用的限制。

    為什么有用

    這是對 promises 更高層次的抽象。

    當(dāng) Promise 在 ES2015 中引入時(shí),它們的目的是解決異步代碼的問題,并且他們做到了。但在 ES2015 和 ES2017 相間隔的兩年時(shí)間里,很明顯, Promise 并不是最終的解決方案。

    引入 Promise 是為了解決著名的 回調(diào)地獄 問題,但它們引入了自己的復(fù)雜性和語法復(fù)雜性。它們是良好的原語,可以向開發(fā)人員公開更好的語法:那就是Async Functions (異步函數(shù))。

    一個(gè)簡單的例子

    使用異步函數(shù)的代碼可以寫成:

    JavaScript 代碼:

    function doSomethingAsync() {     return new Promise((resolve) => {         setTimeout(() => resolve('I did something'), 3000)     }) } async function doSomething() {     console.log(await doSomethingAsync()) } console.log('Before') doSomething() console.log('After')
    登錄后復(fù)制

    上面的代碼將在瀏覽器控制臺中打印以下內(nèi)容:

    JavaScript 代碼:

    Before After I did something //after 3s
    登錄后復(fù)制

    鏈?zhǔn)秸{(diào)用多個(gè)異步函數(shù)

    異步函數(shù)可以非常容易地鏈?zhǔn)秸{(diào)用,并且語法比簡單的 Promise 更具可讀性:

    JavaScript 代碼:

    function promiseToDoSomething() {     return new Promise((resolve)=>{         setTimeout(() => resolve('I did something'), 10000)     }) } async function watchOverSomeoneDoingSomething() {     const something = await promiseToDoSomething()     return something + ' and I watched' } async function watchOverSomeoneWatchingSomeoneDoingSomething() {     const something = await watchOverSomeoneDoingSomething()     return something + ' and I watched as well' } watchOverSomeoneWatchingSomeoneDoingSomething().then((res) => {     console.log(res) })
    登錄后復(fù)制

    共享內(nèi)存 和 Atomics

    WebWorkers 用于在瀏覽器中創(chuàng)建多線程程序。

    他們通過事件提供消息傳遞協(xié)議。 從ES2017開始,您可以使用 SharedArrayBuffer 在 Web worker 及其創(chuàng)建者之間創(chuàng)建共享內(nèi)存數(shù)組。

    由于我們不知道向共享內(nèi)存部分寫入要花費(fèi)多少時(shí)間來傳播,因此 Atomics 是一種在讀取值時(shí)執(zhí)行該操作的方法,并且完成了任何類型的寫入操作。

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號