質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
ECMAScript

ECMAScriptとは、JavaScript類の標準を定めるために作られたスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

1901閲覧

JavaScriptの分類・言葉の定義について

yu.

総合スコア10

ECMAScript

ECMAScriptとは、JavaScript類の標準を定めるために作られたスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

1グッド

8クリップ

投稿2018/01/25 03:24

編集2018/01/25 04:00

最近耳にするようになったECMAScriptについてwikiなどでも調べたのですが、
言葉の定義・理解が漠然としており質問させていただきました。

「ECMAScript=JavaScriptの標準仕様」というのは分かったのですが、
下記について教えていただけると嬉しいです。

※私自身は非エンジニアで所謂エージェント業をしています
(出来るだけミスマッチの起きない理解が出来ればと思い質問させていただきました)

【質問】

1.ECMAScriptが標準仕様ということはそれ以外の仕様には何(名称)があるのか?

2.質問1の回答が「なし」であれば、基本的にはJavaScript=ECMAScriptと抑えても
問題ないのでしょうか??(厳密には違うと思うのですが凡その理解レベルでは)

3.質問2とも関係します。質問2がOKである前提の質問となりますが、
最近求人でES6の経験を問われるケースが増えているのですが、
凡そ下記理解で問題ないでしょうか。

 ・JavaScriptの世界にはECMAScriptという仕様がある
・ECMAScriptの中でもES5以前とES6以降で全然内容が異なる
・「JavaScriptが出来ます!」という人のスキルや対応範囲を判別するときは、
ES6について質問し、対応経験の有無を聞けば大別できる。

素人の質問ですいません!
ご教示いただけると嬉しいです。

sota_u👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

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の仕様と一目で分かる名称を名乗れなかった経緯があります。
(この辺の詳細は忘れました)

  1. 基本的には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 04:32

編集2018/01/25 05:04
miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yu.

2018/01/25 05:21

挙動の不一致や標準仕様になるまでの経緯、道路運送車両法と車など、 非常に分かりやすく解説頂きありがとうございます! ネットで何時間も見ても解決しなかったことをこんなに丁寧に答えて頂き、 感動しております…。
miyabi-sun

2018/01/25 06:37

> ネットで何時間も見ても解決しなかった 質問が良く練られているお陰ですね、 お陰でこちらも何を求めているのか察しやすかったです。 こういうフェイズで正しい方向へ思考を進めていく事はとても難しいので 頑張った数時間が素晴らしい質問文に繋がったのだと思います。 お疲れ様でした。
guest

0

1.ECMAScriptが標準仕様ということはそれ以外の仕様には何(名称)があるのか?

ECMAScriptの仕様をベースにブラウザで動くように拡張されたものがブラウザで動くJavaScirpt。
サーバーで動くようにされたのがNodeということなのではないでしょうか。

ブラウザで動くって言っても、ブラウザってたくさんありますよね。
各ベンダーがそれぞれでJavaScriptが動くようにブラウザを実装しています。
じゃぁJavaScriptってどんなものなの?っとブラウザの開発者は思うので、
こういうものですと「最低限」規格化されたものがECMAScriptです。
だから、このブラウザでは動くけど、あのブラウザでは動かないという文法が
少なからず存在しました。最近はそういうのはなくなりつつありますが。

ECMAScriptのバージョンが上がると、ブラウザの実装者はその仕様を確認して、
新しい文法を使えるようにブラウザを実装します。

標準SQL規格にのっとるように、各ベンダーがSQLを実装してるようなものだと思います。
Oracle、SQLServer、PostgreSQL、MySQLなどRDBMSは様々ありますが、
上記のブラウザと同様に、製品それぞれで実装されているため
その製品でしか使えないような文法や機能もあります。
しかし標準SQLの部分はほぼ全部同じです。

基本的にはJavaScript=ECMAScriptと抑えても問題ないのでしょうか?

この時JavaScriptが何を指しているのか分からないため、問題ありそうです。
ブラウザなのかNodeなのかは大きく変わりますのでそこの確認は必要でしょう。
ECMAScriptの仕様を知っているだけでは、
ブラウザとNodeのどちらのJavaScriptも使えるとは言えません。
ブラウザにはブラウザ独自の、NodeにはNode独自の機能が存在するからです。

・JavaScriptの世界にはECMAScriptという仕様がある

そうです。

・ECMAScriptの中でもES5以前とES6以降で全然内容が異なる

ES6では色々できることが増えましたので、全然内容が異なるのはその通りです。
しかしES5の書き方でも動きますので、今までの知識は無駄ではありません。
積極的にES6を使って書けと言われれば、知らないと書けませんね。

・「JavaScriptが出来ます!」という人のスキルや対応範囲を判別するときは、

ES6について質問し、対応経験の有無を聞けば大別できる。

それは少し乱暴かもしれませんね。
前述した通り、ES5で書いたところで何ら問題なく動くのです。
ES5で壮大なものを作れる人を、ES6を知らないからといって「JavaScriptができない」
と判断するのはおかしいでしょうね。

投稿2018/01/25 04:13

編集2018/01/25 04:14
root_jp

総合スコア4666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yu.

2018/01/25 05:19

ブラウザとの関係性、ES5・6間での違いに加え、 「ES6を使って書いてほしい」といわれた際にすぐに対応可能かどうか、 といった当方の立場を考えて回答いただきありがとうございます! とても理解が進みましたm(_ _)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問