> For the complete documentation index, see [llms.txt](https://mistborn.gitbook.io/til-coding/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mistborn.gitbook.io/til-coding/javascript/polyfills.md).

# Polyfills

執行瀏覽器不支援的原生 API 。

## Babel

當使用語言的新特性，瀏覽器不一樣支援，這時候要使用轉譯器將程式碼轉為較老舊瀏覽器支援的寫法。Babel 包含2 個部分；

1. 轉譯程式，將重新改寫程式碼轉為老舊支援的寫法，webpack 就提供了這樣自動轉譯的功能，對於工程師來說沒有時間的損失。
2. polyfill 新的特性包含內建函式跟語法結構，轉譯器可以轉譯成就的語法結構，但新的函式需要額外加上去。

* &#x20;[babel polyfill](https://babeljs.io/docs/usage/polyfill/) 支援很多函式，但吃資源
* &#x20;[polyfill.io](http://polyfill.io/) 可以視需求加需要的功能

&#x20;[Chrome Canary](https://www.google.com/chrome/browser/canary.html) 可以使用所有新特性。
