JavaScript
==========

**JavaScript** (**JS**) は軽量で、インタープリター型、あるいは実行時コンパイルされる、第一級関数を備えたプログラミング言語です。ウェブページでよく使用されるスクリプト言語として知られ、多くのブラウザー以外の環境、例えば Node.js や Apache CouchDB や Adobe Acrobat などでも使用されています。 JavaScript はプロトタイプベースで、マルチパラダイムで、シングルスレッドで、動的な言語であり、オブジェクト指向、命令型、宣言型（関数プログラミングなど）といったスタイルに対応しています。

JavaScript の動的な機能には、ランタイムオブジェクトの構築、可変引数リスト、関数変数、動的スクリプトの作成（`eval` で）、オブジェクトの内包（`for...in` と `Object` ユーティリティで）、ソースコードの復元（JavaScript 関数はそのソーステキストを格納し `toString()` で復元可能）が含まれます。

この章では JavaScript 言語自体について、すなわちウェブページや他のホスト環境に限定されないコアの部分に限定して解説しています。ウェブページ特有の API 群の情報を得たい場合は Web API と DOM を参照してください。

JavaScript の規格書は ECMAScript Language Specification および ECMAScript Internationalization API specification (ECMA-402) です。私たちは、あるブラウザーが機能を実装するとすぐに、それを文書化するように努めています。このことは、 ECMAScript の新しい機能に関するいくつかの提案がすでにブラウザーに実装されている場合、MDN の記事の文書や例ではそれらの新しい機能のいくつかを使用する可能性があることを示しています。ほとんどの場合、これはステージ 3 と 4 の間で起こることで、通常は仕様が正式に公開される前です。

JavaScript をプログラミング言語 Java と混同しないでください。 **JavaScript は「インタープリター版の Java」では *ありません***。 "Java" と "JavaScript" は両方ともアメリカやその他の国においてオラクルの商標または登録商標です。しかし、この 2 つのプログラミング言語は構文、セマンティック、利用形態が大きく異なります。

コア言語機能の JavaScript ドキュメントは（多くの部分は純粋な ECMAScript）、以下のものがあります。

* JavaScript ガイド
* JavaScript リファレンス

JavaScript 仕様と関連技術に関する詳細は、 JavaScript 技術概要を参照してください。

**フロントエンドのウェブ開発者を目指している方へ**

ゴールに向かって頑張るために必要な情報をまとめたコースをご用意しました。

**始めましょう**

チュートリアル
-------

ガイドやチュートリアルを使って JavaScript をプログラムする方法を学びましょう。

### 完全な初心者向け

JavaScript について学びたいと思っているが、JavaScript あるいはプログラミングについて過去に経験がないのであれば、 JavaScript 学習エリアのトピックに向かいましょう。以下のモジュールが利用可能です。

JavaScript の第一歩

変数、文字列、数値、配列のような JavaScript の基本機能の解説に加え、「JavaScript とは何か」「何に似ているか」「何ができるか」といった基本的な質問に答えます。

JavaScript の構成要素

引き続き JavaScript の基本機能について、条件分岐、ループ、関数、イベントなどのよく目にするタイプのコードブロックに注意を向けつつ説明します。

JavaScript のオブジェクトの紹介

言語に関する知識をさらに深め、より効率的なコードを書きたいのであれば、JavaScript のオブジェクト指向の性質を理解することは重要です。このため、私たちが提供するこのモジュールが役立つでしょう。

非同期 JavaScript

非同期 JavaScript について、なぜ重要なのか、どのように使用してサーバーからのリソースの読み取りなどのブロックが発生する可能性がある操作を効果的に扱うことができるのかを説明します。

クライアント側ウェブ API

API とは何か、開発作業でよく見かける、最も一般的な API の一部の使い方を説明します。

### JavaScript ガイド

JavaScript ガイド

JavaScript や他の言語でのプログラミング経験がある方を対象とした、より詳細な JavaScript 言語のガイドです。

### 中級者向け

クライアント側の JavaScript フレームワークの理解

JavaScript フレームワークは、最新のフロントエンドウェブ開発に欠かせないもので、拡張性のある双方向のウェブアプリケーションを構築するための、試行錯誤されたツールを開発者に提供します。幾つかの有名なツールについて取り扱うチュートリアルに移動する前に、クライアントサイドのフレームワークがどのように動作するのか、自分のツールセットにどのように適合させるか、についての基本的な背景知識を提供します。

JavaScript 言語概要

他のプログラミング言語から来た人がスピードアップするために、 JavaScript の基本的な構文と意味づけの概要を説明します。

JavaScript のデータ構造

JavaScript で利用可能なデータ構造の概要です。

等値比較と同一性

JavaScript には 3 つの異なる値の比較演算子があります。 `===` を用いる厳格な等値性比較、 `==` を用いる緩い等値性比較、そして `Object.is()` メソッドです。

プロパティの列挙と所有権

オブジェクトプロパティのグループを1つずつ訪問する様々なメソッドが、プロパティの列挙可能性と所有権をどのように処理するかです。

クロージャ

クロージャとは、関数とその関数が宣言された字句環境の組み合わせのことです。

### 上級者向け

継承とプロトタイプチェーン

よく誤解されたり過小評価されたりしているプロトタイプベースの継承に対する説明です。

メモリー管理

JavaScript におけるメモリーのライフサイクルとガベージコレクションです。

同時実行モデルとイベントループ

JavaScript は「イベントループ」に基づく同時実行モデルを持っています。

リファレンス
------

完全な JavaScript リファレンスドキュメントをご覧ください。

標準オブジェクト

標準組み込みオブジェクトである `Array`, `Boolean`, `Date`, `Error`, `Function`, `JSON`, `Math`, `Number`, `Object`, `RegExp`, `String`, `Map`, `Set`, `WeakMap`, `WeakSet` などについて理解しましょう。

式と演算子

JavaScript の演算子である `instanceof`, `typeof`, `new`, `this` などの挙動、そして演算子の優先順位などについて学びましょう。

文と宣言

`do-while`, `for-in`, `for-of`, `try-catch`, `let`, `var`, `const`, `if-else`, `switch` などの JavaScript の文やキーワードがどのように機能するか学びましょう。

関数

JavaScript の関数を使ってアプリケーションを開発する方法を学びましょう。

クラス

JavaScript のクラスはオブジェクト指向プログラミングを行う上で最適な方法です。