ES(ECMAScript)とは?jsがブラウザによって動いたり動かなかったりするのはなぜ?
概要
・ESとはECMAcriptの略
・ESとはJavaScriptの標準規格のこと
・jsはもともと標準規格がなく、各ブラウザで仕様の違いがちょこちょこあったらしい
・ECMA Internationalという団体により、jsの標準規格が作成された
・そのES仕様に従って、各ブラウザベンダーがブラウザに機能を実装する
直近のESバージョン
直近リリースされているESバージョンはこんな感じ。
・ES5:2009年末にリリース
・ES5.1:2011年6月にリリース
・ES2015(ES6):2015年6月にリリース
・ES2016:2016年6月にリリース
・ES2017:2017年6月にリリース
・ES2018:2018年6月にリリース
・ES2019:2019年6月にリリース
ほぼ全部のブラウザで動くのがES5。
いま標準になっているのがES6。
それ以降は毎年新バージョンがリリースされ、
年号をバージョン名としている。
ESバージョンで何が変わるのか
ESのバージョンが上がると具体的に何が変わるのか。
より書きやすく便利な文法が追加されたり、
便利な標準ライブラリが追加されたりする。
ES5とES6の例でメジャーなものだけをピックアップ。
アロー関数
ES5ではこのように書いていた。
var arrow = function arrow() {
return 'アロー関数';
};
これをES6ではこのように書くことができる。
var arrow = () => {
return 'アロー関数';
};
分割代入
ES5ではこのように書いていた。
var firstName = '田中',
lastName = '一郎';
これをES6ではこのように書くことができる。
var [firstName, lastName] = ['田中', '一郎'];
Math
標準ライブラリとしてMathが追加された。
Math.abs(x)
で絶対値を返したり、
Math.ceil(x)
で切り上げしあり、
いろいろ便利な計算処理機能を提供している。
このほかにもいろいろと、
便利な記法や関数、ライブラリなどが追加されている。
各ブラウザの対応状況
ES最新バージョンがリリースされたからと言って、
全てのブラウザがその最新ES機能を使えるわけではない。
ブラウザAでは最新ESの機能がすべて実装されているが、
ブラウザBではES5までの機能しか使えない。
のようなことがある。
各ブラウザごとにどのESバージョンに対応しているのかを
このサイトでチェックすることができる。
http://kangax.github.io/compat-table/es6/
または、このサイトでは
使いたい機能をキーワードで検索し、
各ブラウザの対応状況を確認することができる。
https://caniuse.com/#search=arrow
IEはES5までしか対応していない
ここで重要なのは、
主要ブラウザである
Chrome、FireFox、Safari、Edgeなどは
基本的にES6以上に対応しているのに対し、
IEはES5までしか対応していないということ。
つまり、
上述したarrow関数や、Mathライブラリなど、
ES6の便利な機能を使って開発を進めていたが、
IEで動作確認したら全然動かなかった。
ということが起きてしまう。
IEへの対応方法
ES6の便利な機能をたくさん使って実装したいが、
IEでも動作する必要がある。
とか
ESの事情など知らずに実装してしまい、
最後に動作確認してみたらIEだけ全然動かなった(知らずにES6で書いてた)。
ということがあるかと思います。
そのような状況を解決してくれる
polyfill
とbabel
という便利なツールがあります。
ES6を使って効率的に開発を進めたうえで、
polyfill
やbabel
などのツールを使ってIEに対応する。
というやり方が割と一般的なようです。
具体的な機能、使い方は個別記事を参照。
polyfill、babelとは?jsをどのブラウザでも動くようにしてくれる。(IE対応)
参考
https://www.sejuku.net/blog/100946
https://qiita.com/rifutan/items/a55f132d4dae7e2f1941
https://qiita.com/rana_kualu/items/1f98c1a642102f48aa78
Author And Source
この問題について(ES(ECMAScript)とは?jsがブラウザによって動いたり動かなかったりするのはなぜ?), 我々は、より多くの情報をここで見つけました https://qiita.com/minato-naka/items/73b9d531c871d98a3f22著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .