# JavaScriptとは

## アウトライン

- JavaScriptでできること
    - JavaScriptが動く実行環境
- JavaScriptという言語
    - ECMAScriptとの関係
    - この書籍はES2015以降をベースにしている
    - JavaScriptは実装(いろんな実行環境がある)
    - ECMAScriptは仕様(実装はこの仕様を元に実装している)
    - なので、たまに実装によって動きが異なる場合があります。
    - 近年はこの差異はかなり小さくなっているため問題になることは少なくなっていますが、この書籍でも仕様ではきちんと決められていないエラーメッセージなどには多少の差異ががあります。(どちらのエラーも表記するようにします)
    - 明確にJavaScriptとECMAScriptを区別したいときはECMAScriptという用語を使いますが、それ以外はJavaScriptと呼びます。
    - ECMAScriptという仕様がどのように作られているかはECMASCriptの章で紹介します。
    - また既存のコードは古いES5(何年?)に書かれたコードもある。それも読めるようにカバーしていく。書くときはES2015以降の書き方で良いよ
- (プログラム経験者向け) JavaScriptとは
    - もともとNetscapeというウェブブラザ向けに作成された言語です
    - JavaやCなどの言語の影響を受けています。
    - プロトタイプベースの言語
    -　JavaScriptは大部分がオブジェクト（値や処理を1つに集めた塊と考えてください）でできていて、様々な種類のオブジェクトがあります
    - 大きく分けるとECMAScriptの仕様で決めたオブジェクト、実行環境（ブラウザやNode.js）が定義したオブジェクト、ユーザー(あなた)が定義したオブジェクトがあります。
    - 第一部の基本文法ではECMAScriptの定義する構文やビルトインオブジェクトを扱います。（ECMAScriptの定義するオブジェクト)
    - 第二部のユースケースではブラウザが定義するDOM APIやNode.jsのコアAPIを扱い、小さなアプリケーションを作成します。（実行環境が定義するオブジェクト）
    - ユーザーが定義するオブジェクトは様々なタイミングで登場でします（コードを書くということはオブジェクトを作るとも言えます）
- JavaScriptのリファレンス
    - JavaScriptはMDNというほぼ公式に近いリファレンスがあります。
    - たとえば`const`を調べてみましょう
    - この書籍でも色々解説していますが、読み方が違うだけでハマるときがあろきます。
    - そのようなときにリファレンスとしてMDNをあわせてみると役に立ちます。
- まとめ
    - JavaScriptはいろんなアプリを手軽に作成でき、かなり幅広く使われているプログラミング言語です
    - ECMAScriptという仕様があり、それを各ブラウザなどが実装したものがJavaScriptです。
    - JavaScriptは特別難しくもなく優しくもない普通の言語です。色々なところでオブジェクトという単語を見かけるのは特徴的です
    - MDNという公式に近いリファレンス(辞書)があります。迷ったらMDNやGoogleで検索してみてください。

## やること

- strict modeを実行の方へ移動
