成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

[譯] TC39,ECMAScript 和 JavaScript 的未來(lái)(Part 1)

ziwenxie / 1408人閱讀

摘要:由很多令人興奮的功能,如對(duì)象的解析與剩余,異步迭代器,方法和更好的正則表達(dá)式支持。迭代可以是任何遵循迭代器協(xié)議的對(duì)象。迭代器方法應(yīng)該返回一個(gè)具有方法的對(duì)象。

原文:TC39, ECMAScript, and the Future of JavaScript
作者:Nicolás Bevacqua

譯者序

很榮幸能夠和 Nicolás Bevacqua 同臺(tái)分享。Nicolás Bevacqua 分享了《the Future of Writing JavaScript 》,我在其后分享了《面向前端開(kāi)發(fā)者的V8性能優(yōu)化》。如果想了解更多 V8 知識(shí)可以關(guān)注我的專欄:V8 引擎。

由于 Nicolás Bevacqua 是英文分享,現(xiàn)場(chǎng)由很多聽(tīng)眾都沒(méi)有太明白,會(huì)后我聯(lián)系了 Nicolás Bevacqua 爭(zhēng)得大神同意后將其文章翻譯為中文。

大神微信玩的很溜,很快就學(xué)會(huì)了搶紅包。

再次感謝 Nicolás Bevacqua 的精彩分享。

譯文:

上周,我在中國(guó)深圳的騰訊前端大會(huì)上發(fā)表了與本文同名的演講。在這篇文章中,我根據(jù) PonyFoo 網(wǎng)站的格式重新編輯了一遍。我希望你喜歡它!

TC39 是什么?

TC39 指的是技術(shù)委員會(huì)(Technical Committee)第 39 號(hào)。它是 ECMA 的一部分,ECMA 是 “ECMAScript” 規(guī)范下的 JavaScript 語(yǔ)言標(biāo)準(zhǔn)化的機(jī)構(gòu)。

ECMAScript 規(guī)范定義了 JavaScript 如何一步一步的進(jìn)化、發(fā)展。其中規(guī)定了:

字符串 "A" 為什么是 NaN

字符串 "A" 為什么不等于 NaN

NaN 為什么是 NaN,但卻不等于 NaN

并介紹了為什么 Number.isNaN 是一個(gè)很好的 idea ...

isNaN(NaN) // true
isNaN("A") // true
"A" == NaN // false
"A" === NaN // false
NaN === NaN // false

// … 解決方案!

Number.isNaN("A") // false
Number.isNaN(NaN) // true

它還解釋了正零與負(fù)零什么情況下相等,什么情況下不相等。。。

+0 == -0 // true
+0 === -0 // true
1/+0 === 1 / -0 // false

而且 js 中還有很多奇技淫巧,例如只使用感嘆號(hào)、小括號(hào)、方括號(hào)和加號(hào)來(lái)編碼任何有效的 JavaScript 表達(dá)式。可以在 JSFuck 網(wǎng)站了解更多關(guān)于如何只使用 +!()[] 編寫(xiě) JavaScript 代碼的技巧。

不論如何,TC39 所做的不懈努力是難能可貴的。

TC39 遵循的原則是:分階段加入不同的語(yǔ)言特性。一旦提案成熟,TC39 會(huì)根據(jù)提案中的變動(dòng)來(lái)更新規(guī)范。直到最近,TC39 依然依賴基于 Microsoft Word 的比較傳統(tǒng)的工作流程。但 ES3 出來(lái)之后,他們花了十年時(shí)間,幾乎沒(méi)有任何改變,使其達(dá)到規(guī)范。之后,ES6 又花了四年才能實(shí)現(xiàn)。

顯然,他們的流程必須改善。

自 ES6 出來(lái)之后,他們精簡(jiǎn)了提案的修訂過(guò)程,以滿足現(xiàn)代化開(kāi)發(fā)的需求。新流程使用 HTML 的超集來(lái)格式化提案。他們使用 GitHub pull requests,這有助于增加社區(qū)的參與,并且提出的提案數(shù)量也增加了。這個(gè)規(guī)范現(xiàn)在是一個(gè) living standard,這意味著提案會(huì)更快,而且我們也不用等待新版本的規(guī)范出來(lái)。

新流程涉及四個(gè)不同的 Stage。一個(gè)提案越成熟,越有可能最終將其納入規(guī)范。

Stage 0

任何尚未提交作為正式提案的討論、想法變更或者補(bǔ)充都被認(rèn)為是第 0 階段的“稻草人”提案。只有 TC39 的成員可以創(chuàng)建這些提案,而且今天就有若干活躍的“稻草人”提案。

目前在 Stage 0 的提案包括異步操作的 cancellation tokens , Zones 作為 Angular 團(tuán)隊(duì)的一員,提供了很多建議。Stage 0 包括了很多一直沒(méi)有進(jìn)入 Stage 1 的提案。

在這篇文章的后面,我們將仔細(xì)分析一部分提案。

Stage 1

在 Stage 1,提案已經(jīng)被正式化,并期望解決此問(wèn)題,還需要觀察與其他提案的相互影響。在這個(gè)階段的提案確定了一個(gè)分散的問(wèn)題,并為這個(gè)問(wèn)題提供了具體的解決方案。

Stage 1 提議通常包括高階 API 描述(high level AP),使用示例以及內(nèi)部語(yǔ)義和算法的討論。這些建議在通過(guò)這一過(guò)程時(shí)可能會(huì)發(fā)生重大變化。

Stage 1 目前提案的例子包括:Observable、do 表達(dá)式、生成器箭頭函數(shù)、Promise.try。

Stage 2

Stage 2 的提案應(yīng)提供規(guī)范初稿。

此時(shí),語(yǔ)言的實(shí)現(xiàn)者開(kāi)始觀察 runtime 的具體實(shí)現(xiàn)是否合理。該實(shí)現(xiàn)可以使用 polyfill 的方式,以便使代碼可在 runtime 中的行為負(fù)責(zé)規(guī)范的定義; javascript 引擎的實(shí)現(xiàn)為提案提供了原生支持; 或者可以 Babel 這樣的編譯時(shí)編譯器來(lái)支持。

目前 Stage 2 階段的提案有 public class fields、private class fields、decorators、Promise#finally、等等。

Stage 3

Stage 3 提案是建議的候選提案。在這個(gè)高級(jí)階段,規(guī)范的編輯人員和評(píng)審人員必須在最終規(guī)范上簽字。Stage 3 的提案不會(huì)有太大的改變,在對(duì)外發(fā)布之前只是修正一些問(wèn)題。

語(yǔ)言的實(shí)現(xiàn)者也應(yīng)該對(duì)此提案感興趣 - 如果只是提案卻沒(méi)有具體實(shí)現(xiàn)去支持這個(gè)提案,那么這個(gè)提案早就胎死腹中了。事實(shí)上,提案至少具有一個(gè)瀏覽器實(shí)現(xiàn)、友好的 polyfill或者由像 Babel 這樣的構(gòu)建時(shí)編譯器支持。

Stage 3 由很多令人興奮的功能,如對(duì)象的解析與剩余,異步迭代器,import() 方法和更好的 Unicode 正則表達(dá)式支持。

Stage 4

最后,當(dāng)規(guī)范的實(shí)現(xiàn)至少通過(guò)兩個(gè)驗(yàn)收測(cè)試時(shí),提案進(jìn)入 Stage 4。

進(jìn)入 Stage 4 的提案將包含在 ECMAScript 的下一個(gè)修訂版中。

異步函數(shù),Array#includes 和 冪運(yùn)算符 是 Stage 4 的一些特性。

保持最新 Staying Up To Date

我(原文作者)創(chuàng)建了一個(gè)網(wǎng)站,用來(lái)展示當(dāng)前提案的列表。它描述了他們?cè)谑裁措A段,并鏈接到每個(gè)提案,以便您可以更多地了解它們。

網(wǎng)址為 proptt39.now.sh。

目前,每年都有新的正式規(guī)范版本,但精簡(jiǎn)的流程也意味著正式版本變得越來(lái)越不相關(guān)?,F(xiàn)在重點(diǎn)放在提案階段,我們可以預(yù)測(cè),在 ES6 之后,對(duì)該標(biāo)準(zhǔn)的具體修訂的引用將變得不常見(jiàn)。

提案 Proposals

我們來(lái)看一些目前正在開(kāi)發(fā)的最有趣的提案。

Array#includes (Stage 4)

在介紹 Array#includes 之前,我們不得不依賴 Array#indexOf 函數(shù),并檢查索引是否超出范圍,以確定元素是否屬于數(shù)組。

隨著 Array#includes 進(jìn)入 Stage 4,我們可以使用 Array#includes 來(lái)代替。它補(bǔ)充了 ES6 的 Array#findArray#findIndex。

[1, 2].indexOf(2) !== -1 // true
[1, 2].indexOf(3) !== -1 // false
[1, 2].includes(2) // true
[1, 2].includes(3) // false
異步函數(shù)(Stage 4)

當(dāng)我們使用 Promise 時(shí),我們經(jīng)常考慮執(zhí)行線程。我們有一個(gè)異步任務(wù) fetch,其他任務(wù)依賴于 fetch 的響應(yīng),但在收到該數(shù)據(jù)之前程序時(shí)阻塞的。

在下面的例子中,我們從 API 中獲取產(chǎn)品列表,該列表返回一個(gè) Promise。當(dāng) fetch 相應(yīng)之后,Promise 被 resolve。然后,我們將響應(yīng)流作為 JSON 讀取,并使用響應(yīng)中的數(shù)據(jù)更新視圖。如果在此過(guò)程中發(fā)生任何錯(cuò)誤,我們可以將其記錄到控制臺(tái),以了解發(fā)生了什么。

fetch("/api/products")
  .then(response => response.json())
  .then(data => {
    updateView(data)
  })
  .catch(err => {
    console.log("Update failed", err)
  })

異步函數(shù)提供了語(yǔ)法糖,可以用來(lái)改進(jìn)我們基于 Promise 的代碼。我們開(kāi)始逐行改變以上基于 Promise 的代碼。我們可以使用 await 關(guān)鍵字。當(dāng)我們 await 一個(gè) Promise 時(shí),我們得到 Promise 的 fulled 狀態(tài)的值。

Promise 代碼的意思是:“我想執(zhí)行這個(gè)操作,然后(then)在其他操作中使用它的結(jié)果”。

同時(shí),await 有效地反轉(zhuǎn)了這個(gè)意思,使得它更像:“我想要取得這個(gè)操作的結(jié)果”。我喜歡,因?yàn)樗?tīng)起來(lái)更簡(jiǎn)單。

在我們的示例中,響應(yīng)對(duì)象是我們之后獲取的,所以我們將等待(await)獲取(fetch)操作的結(jié)果,并賦值給 response 變量,而不是使用 promisethen。

原文:we’ll flip things over and assigned the result of await fetch to the response variable

+ const response = await fetch("/api/products")
- fetch("/api/products")
    .then(response => response.json())
    .then(data => {
      updateView(data)
    })
    .catch(err => {
      console.log("Update failed", err)
    })

我們給 response.json() 同樣的待遇。我們 await 上一次的操作并將其賦值給 data 變量。

  const response = await fetch("/api/products")
+ const data = await response.json()
-   .then(response => response.json())
    .then(data => {
      updateView(data)
    })
    .catch(err => {
      console.log("Update failed", err)
    })

既然 then 鏈已經(jīng)消失了,我們就可以直接調(diào)用 updateView 語(yǔ)句了,因?yàn)槲覀円呀?jīng)到了之前代碼中的 Promise then 鏈的盡頭,我們不需要等待任何其他的 Promise。

  const response = await fetch("/api/products")
  const data = await response.json()
+ updateView(data)
-   .then(data => {
-     updateView(data)
-   })
    .catch(err => {
      console.log("Update failed", err)
    })

現(xiàn)在我們可以使用 try/catch 塊,而不是 .catch,這使得我們的代碼更加語(yǔ)義化。

+ try {
    const response = await fetch("/api/products")
    const data = await response.json()
    updateView(data)
+ } catch(err) {
- .catch(err => {
    console.log("Update failed", err)
+ }
- )}

一個(gè)限制是 await 只能在異步函數(shù)內(nèi)使用。

+ async function run() {
    try {
      const response = await fetch("/api/products")
      const data = await response.json()
      updateView(data)
    } catch(err) {
      console.log("Update failed", err)
    }
+ }

但是,我們可以將異步函數(shù)轉(zhuǎn)換為自調(diào)用函數(shù)表達(dá)式。如果我們將頂級(jí)代碼包在這樣的表達(dá)式中,我們可以在代碼中的任何地方使用 await 表達(dá)式。

一些社區(qū)希望原生支持頂級(jí)塊作用于的 await,而另外一些人則認(rèn)為這會(huì)對(duì)用戶造成負(fù)面影響,因?yàn)橐恍?kù)可能會(huì)阻塞異步加載,從而大大減緩了我們應(yīng)用程序的加載時(shí)間。

+ (async () => {
- async function run() {
    try {
      const response = await fetch("/api/products")
      const data = await response.json()
      updateView(data)
    } catch(err) {
      console.log("Update failed", err)
    }
+ })()
- }

就個(gè)人而言,我認(rèn)為在 JavaScript 性能中已經(jīng)有足夠的空間來(lái)應(yīng)對(duì)這種愚蠢的事情,來(lái)優(yōu)化初始化的庫(kù)使用 await 的行為。

請(qǐng)注意,您也可以在 non-promise 的值前面使用 await,甚至編寫(xiě)代碼 await (2 + 3)。在這種情況下,(2 + 3) 表達(dá)的結(jié)果會(huì)被包在 Promise 中,作為 Promise 的最終值。5 成為這個(gè) await 表達(dá)式的結(jié)果。

請(qǐng)注意,await 加上任何 JavaScript 表達(dá)式也是一個(gè)表達(dá)式。這意味著我們不限制 await 語(yǔ)句的賦值操作,而且我們也可以把 await 函數(shù)調(diào)用作為模板文字插值的一部分。

`Price: ${ await getPrice() }`

或作為另一個(gè)函數(shù)調(diào)用的一部分...

renderView(await getPrice())

甚至作為數(shù)學(xué)表達(dá)式的一部分。

2 * (await getPrice())

最后,不管它們的內(nèi)容如何,??異步函數(shù)總是返回一個(gè) Promise。這意味著我們可以添加 .then.catch 等異步功能,也可以使用 await 獲取最終的結(jié)果。

const sleep = delay => new Promise(resolve =>
  setTimeout(resolve, delay)
)

const slowLog = async (...terms) => {
  await sleep(2000)
  console.log(...terms)
}

slowLog("Well that was underwhelming")
  .then(() => console.log("Nailed it!"))
  .catch(reason => console.error("Failed", reason))

正如您所期望的那樣,返回的 Promise 與 async 函數(shù)返回的值進(jìn)行運(yùn)算,或者被 catch 函數(shù)來(lái)處理任何未捕獲的異常。

異步迭代器(Stage 3)

異步迭代器已經(jīng)進(jìn)入了 Stage 3。在了解異步迭代器之前,讓我們簡(jiǎn)單介紹一下 ES6 中引入的迭代。迭代可以是任何遵循迭代器協(xié)議的對(duì)象。

為了使對(duì)象可以迭代,我們定義一個(gè) Symbol.iterator 方法。迭代器方法應(yīng)該返回一個(gè)具有 next 方法的對(duì)象。這個(gè)對(duì)象描述了我們的 iterable 的順序。當(dāng)對(duì)象被迭代時(shí),每當(dāng)我們需要讀取序列中的下一個(gè)元素時(shí),將調(diào)用 next 方法。value 用來(lái)獲取序列中每一個(gè)對(duì)象的值。當(dāng)返回的對(duì)象被標(biāo)記為 done,序列結(jié)束。

const list = {
  [Symbol.iterator]() {
    let i = 0
    return {
      next: () => ({
        value: i++,
        done: i > 5
      })
    }
  }
}
[...list]
// <- [0, 1, 2, 3, 4]
Array.from(list)
// <- [0, 1, 2, 3, 4]
for (const i of list) {
  // <- 0, 1, 2, 3, 4
}

可以使用 Array.from 或使用擴(kuò)展操作符使用 Iterables 。它們也可以通過(guò)使用 for..of 循環(huán)來(lái)遍歷元素序列。

異步迭代器只有一點(diǎn)點(diǎn)不同。在這個(gè)提議下,一個(gè)對(duì)象通過(guò) Symbol.asyncIterator 來(lái)表示它們是異步迭代的。異步迭代器的方法簽名與常規(guī)迭代器的約定略有不同:該 next 方法需要返回 包裝了 { value, done }Promise,而不是 { value, done } 直接返回。

const list = {
  [Symbol.asyncIterator]() {
    let i = 0
    return {
      next: () => Promise.resolve({
        value: i++,
        done: i > 5
      })
    }
  }
}

這種簡(jiǎn)單的變化非常優(yōu)雅,因?yàn)?Promise 可以很容易地代表序列的最終元素。

異步迭代不能與數(shù)組擴(kuò)展運(yùn)算符、Array.from、for..of 一起使用,因?yàn)檫@三個(gè)都專門(mén)用于同步迭代。

這個(gè)提案也引入了一個(gè)新的 for await..of 結(jié)構(gòu)。它可以用于在異步迭代序列上語(yǔ)義地迭代。

for await (const i of items) {
  // <- 0, 1, 2, 3, 4
}

請(qǐng)注意,該 for await..of 結(jié)構(gòu)只能在異步函數(shù)中使用。否則我們會(huì)得到語(yǔ)法錯(cuò)誤。就像任何其他異步函數(shù)一樣,我們也可以在我們的循環(huán)周?chē)騼?nèi)部使用 try/catchfor await..of。

async function readItems() {
  for await (const i of items) {
    // <- 0, 1, 2, 3, 4
  }
}

更進(jìn)一步。還有異步生成器函數(shù)。與普通生成器函數(shù)有些相似,異步生成器函數(shù)不僅支持 async await 語(yǔ)義,還允許 await 語(yǔ)句以及 for await..of。

(原文第一段:The rabbit hole goes deeper of course. 這是愛(ài)麗絲夢(mèng)游仙境的梗嗎?)

async function* getProducts(categoryUrl) {
  const listReq = await fetch(categoryUrl)
  const list = await listReq.json()
  for (const product of list) {
    const productReq = await product.url
    const product = await productReq.json()
    yield product
  }
}

在異步生成器函數(shù)中,我們可以使用 yield* 與其他異步發(fā)生器和普通的發(fā)生器一起使用。當(dāng)調(diào)用時(shí),異步生成器函數(shù)返回異步生成器對(duì)象,其方法返回包裹了 { value, done } 的 Promise,而不是 { value, done }。

最后,異步生成器對(duì)象可以被使用在 for await..of,就像異步迭代一樣。這是因?yàn)楫惒缴善鲗?duì)象是異步迭代,就像普通生成器對(duì)象是普通的迭代。

async function readProducts() {
  const g = getProducts(category)
  for await (const product of g) {
    // use product details
  }
}
對(duì)象解構(gòu)與剩余(Stage 3)

從 ES6 開(kāi)始,我們使用 Object.assign 將屬性從一個(gè)或多個(gè)源對(duì)象復(fù)制到一個(gè)目標(biāo)對(duì)象上。在下一個(gè)例子中,我們將一些屬性復(fù)制到一個(gè)空的對(duì)象上。

Object.assign(
 {},
 { a: "a" },
 { b: "b" },
 { a: "c" }
)

對(duì)象解構(gòu)(spread)提議允許我們使用純語(yǔ)法編寫(xiě)等效的代碼。我們從一個(gè)空對(duì)象開(kāi)始,Object.assign 隱含在語(yǔ)法中。

{
 ...{ a: "a" },
 ...{ b: "b" },
 ...{ a: "c" }
}
// <- { a: "c", b: "b" }

和對(duì)象解構(gòu)相反的還有對(duì)象剩余,類似數(shù)組的剩余參數(shù)。當(dāng)對(duì)對(duì)象進(jìn)行解構(gòu)時(shí),我們可以使用對(duì)象擴(kuò)展運(yùn)算符將模式中未明確命名的屬性重建為另一個(gè)對(duì)象。

在以下示例中,id 顯式命名,不會(huì)包含在剩余對(duì)象中。對(duì)象剩余(rest)可以從字面上讀取為“所有其他屬性都轉(zhuǎn)到一個(gè)名為 rest 的對(duì)象”,當(dāng)然,變量名稱供您選擇。

const item = {
 id: "4fe09c27",
 name: "Banana",
 amount: 3
}
const { id, ...rest } = item
// <- { name: "Banana", amount: 3 }

在函數(shù)參數(shù)列表中解析對(duì)象時(shí),我們也可以使用對(duì)象剩余屬性。

function print({ id, ...rest }) {
  console.log(rest)
}
print({ id: "4fe09c27", name: "Banana" })
// <- { name: "Banana" }
動(dòng)態(tài) import()(Stage 3)

ES6 引入了原生 JavaScript 模塊。與 CommonJS 類似,JavaScript 模塊選擇了靜態(tài)語(yǔ)法。這樣開(kāi)發(fā)工具有更簡(jiǎn)單的方式從靜態(tài)源碼中分析和構(gòu)建依賴樹(shù),這使它成為一個(gè)很好的默認(rèn)選項(xiàng)。

import markdown from "./markdown"
// …
export default compile

然而,作為開(kāi)發(fā)人員,我們并不總是知道我們需要提前導(dǎo)入的模塊。對(duì)于這些情況,例如,當(dāng)我們依賴本地化來(lái)加載具有用戶語(yǔ)言的字符串的模塊時(shí),Stage 3 的動(dòng)態(tài) import() 提案就很有用了。

import() 運(yùn)行時(shí)動(dòng)態(tài)加載模塊。它為模塊的命名空間對(duì)象返回 Promise,當(dāng)獲取該對(duì)象時(shí),系統(tǒng)將解析和執(zhí)行所請(qǐng)求的模塊及其所有依賴項(xiàng)。如果模塊加載失敗,Promise 將被拒絕。

import(`./i18n.${ navigator.language }.js`)
  .then(module => console.log(module.messages))
  .catch(reason => console.error(reason))

未完。。。。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/83771.html

相關(guān)文章

  • 2017-07-02 前端日?qǐng)?bào)

    摘要:前端日?qǐng)?bào)精選譯,和的未來(lái)學(xué)習(xí)筆記箭頭函數(shù)學(xué)習(xí)筆記教程?hào)鸥癫季志硗林貋?lái),用還是為什么我會(huì)選擇而不是眾成翻譯原生開(kāi)發(fā)入門(mén)完全教程從零到壹全棧部落中文一個(gè)端帶文件路徑和顏色的攻城方略譯使用提高應(yīng)用程序的種方式中自定義操作符修仙 2017-07-02 前端日?qǐng)?bào) 精選 [譯] TC39,ECMAScript 和 JavaScript 的未來(lái)(Part 1)ES6學(xué)習(xí)筆記:箭頭函數(shù)_ES6, Ja...

    lemon 評(píng)論0 收藏0
  • ECMAScript文檔---序言及1-6章(上)

    摘要:隨后,它出現(xiàn)在公司之后的瀏覽器,以及從微軟從起發(fā)布的所有瀏覽器上。標(biāo)準(zhǔn)的第版在年月的大會(huì)上被表決接受。第版在年月底大會(huì)上被采納。 前言 ??本系列譯文的初衷旨在希望更多人能夠了解關(guān)于JS的一些基本概念,遇到原理性的問(wèn)題時(shí)多去翻翻文檔,而不是在社區(qū)無(wú)休止的重復(fù)提出某些在文檔中能夠非常方便快捷就能找到的東西。 ??精力和水平有限,所以暫時(shí)只打算嘗試翻譯前面幾章概括性的介紹,同時(shí)后面的章節(jié)大...

    wind3110991 評(píng)論0 收藏0
  • 】關(guān)于轉(zhuǎn)JavaScript 程序員需要知道

    摘要:他們的計(jì)劃是,使用微軟開(kāi)發(fā)者們所習(xí)慣的其他語(yǔ)言的開(kāi)發(fā)工具所支持的靜態(tài)類型,得到更好的代碼。在微軟內(nèi)部,被和以及團(tuán)隊(duì)所使用,而且它被系的等公司使用。標(biāo)準(zhǔn)的編輯,同時(shí)也是微軟項(xiàng)目高級(jí)經(jīng)理的也同意。 本文轉(zhuǎn)載自:眾成翻譯譯者:文藺鏈接:http://www.zcfy.cc/article/895原文:http://thenewstack.io/javascript-transpilers-n...

    freecode 評(píng)論0 收藏0
  • 2017-07-08 前端日?qǐng)?bào)

    摘要:前端日?qǐng)?bào)精選精讀與提案知乎專欄第期認(rèn)識(shí)引擎記錄一次利用工具進(jìn)行性能優(yōu)化的真實(shí)案例簡(jiǎn)書(shū)中的使用規(guī)則教程繼承的實(shí)現(xiàn)方法個(gè)人文章中文譯組件渲染性能探索個(gè)人文章周刊第期表單性能的改進(jìn)實(shí)踐知乎專欄簡(jiǎn)單可重用的圖表庫(kù)知乎專欄 2017-07-08 前端日?qǐng)?bào) 精選 精讀 TC39 與 ECMAScript 提案 - 知乎專欄【第989期】認(rèn)識(shí) V8 引擎記錄一次利用 Timeline/Perform...

    王巖威 評(píng)論0 收藏0
  • 三個(gè)值得期待JavaScript新功能!

    摘要:每個(gè)引擎開(kāi)始實(shí)現(xiàn)每次發(fā)布后指定的更改。每個(gè)提案都是最初提出的或。此建議的目的只是為了避免在提案被放棄或徹底更改時(shí)出現(xiàn)問(wèn)題。這將限制對(duì)這些檢查的需求,從而限制性能損失。這與這就是新提案無(wú)效合并的用武之地。這是因?yàn)閮r(jià)值已成為承諾。 讓我們來(lái)看看JavaScript中一些有用的即將推出的功能。您將看到他們的語(yǔ)法,鏈接以及時(shí)了解他們的進(jìn)度,我們將編寫(xiě)一個(gè)小型測(cè)試套件,以展示如何立即開(kāi)始使用這些...

    UCloud 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<