JavaScriptは各種ブラウザを作ってる各団体が、勝手にエンジンを搭載させるものです。
PHPやC言語みたいに共通のコンパイラが存在するわけじゃないんですね。
それってかなりまずくない?はいまずいです。
まぁECMAScript(以下ES)のお陰でほぼ挙動が統一されていますが、昔はやばかったですね。
IEはちょっと仕様の違うJScriptというモノを使っていましたし、
ActionScriptというFlash内で使われているスクリプト言語もES準拠です。
このECMAScriptとはなんぞや?
"str" == null
の結果はfalse
であるべき。…みたいな事がつらつらと書かれている仕様書です。
配列のプロトタイプメソッドや正規表現の動作仕様なんかもバッチリ記載されており、
Chrome用に書かれたJavaScriptをFirefoxに持っていっても、寸分違わず同じ動作をするのはこの仕様のおかげです。
ここまでわかれば後はWikipediaで何とかなると思うんで、Wikipediaのリンクを貼り付けておきます。
https://ja.wikipedia.org/wiki/JavaScript
https://ja.wikipedia.org/wiki/ECMAScript
1.ECMAScriptが標準仕様ということはそれ以外の仕様には何(名称)があるのか?
「ない」と考えて良いでしょう。
1990年代後半の各社がバラバラに実装してるヤバイ状況のJSに号令かける為に作られたのがESです。
本当はJavaScriptにちなんだ名前にしたかったようですが、
何らかの問題があって、JavaScriptの仕様と一目で分かる名称を名乗れなかった経緯があります。
(この辺の詳細は忘れました)
- 基本的にはJavaScript=ECMAScriptと抑えても問題ないのでしょうか?
ESが道路運送車両法、JSは実際に公道を走ってる車…という解釈がより正解に近いです。
電気自動車だろうが、ロータリーエンジン積もうが、タイヤ交換しようがなんでも良いわけです。
法律にさえ従えば公道走って良いですからね。
実際の世界では1台の車を指差して、「あっ、道路運送車両法だ!」と呼ぶ人間は居ません。
でも、車を見ながら「これが基準ギリギリ?道路運送車両法のここの基準は駄目だよなぁ」という発言はありえますね。
JS≒ESと同一視しているように見えますが、エンジニアは文脈でちゃんと使い分けています。
3-1. JavaScriptの世界にはECMAScriptという仕様がある
前述の通り、YES
3-2. ECMAScriptの中でもES5以前とES6以降で全然内容が異なる
これはNOです。
他のモノに例えるならば、新旧の「そ」というひらがなみたいな感じですかね。
JavaScript
1// ES5まではこう書いてた
2var add = function (a + b) {
3 return a + b;
4}
5console.log(add(2, 4));
6// Number: 6
7
8// アロー関数を使って簡易的に書ける
9var add = (a, b) => a + b;
10console.log(add(2, 4));
11// Number: 6
こういう新しく簡素で分かりやすい書き方や、便利関数が多数実装されたスーパーセットがES6です。
ES5でも自在に書ける人間がES6になって、簡単になった、全然別物、便利な世の中になったもんだ・・・とつぶやきますが、
基本的にはES6はスーパーセットなので、ES5完全準拠なJSコードもES6の世界で動作します。
だって当然じゃないですか。
昨日までWebサイトで動いていたES5準拠のコードが、ChromeがアップデートしてES6になったので動きません。
貴方の会社のホームページも動作しませんwww
こんなことになったら許せないでしょ?なので下位互換は残しています。
もちろんES5までに培ったテクニックやライブラリ等は全て使えます。
3-3. 「JavaScriptが出来ます!」という人のスキルや対応範囲を判別するときは、ES6について質問し、対応経験の有無を聞けば大別できる。
凄腕のフロントエンドエンジニアを名乗る人間に探りを入れる目的に使うのはありです。
一切ノータッチでJavaScriptが得意ですというのは今日日少々不自然ですからね。
でもまぁ、ES5準拠でもいくらでも素晴らしいコードは書けますので、
ES6にあまり詳しくないだけで弾くような潔癖な事はしないほうが良いかもしれません。
何故ならばIE11はES6のコードがほぼ動作しないからです。
これに対する対応策はいくつもあり、ES6で書いたコードをES5に変換してデプロイという手法がメジャーですが、
あえてES5準拠で書くようなアプローチを採用することも多いですからね。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/25 05:21
2018/01/25 06:37