01. 背景

JavaScript がどこで生まれ、どこで動くのか。Java ・ C# ・ VBA と何が違うのかを、ざっと掴む

📅 作成: 2026-10-09 / 更新: 2026-10-20

JavaScript とは

JavaScript は、もともとWeb ページを動かすためにブラウザへ組み込まれた言語です。ボタンを押したら表示が変わる、入力をその場で確かめる、といった処理を受け持ってきました。

いまはブラウザの外でも動きます。サーバ、コマンドラインのツール、デスクトップアプリ、スマートフォンアプリまで、同じ言語で書けます。

ブラウザ用の 言語として誕生 ECMAScript として標準化 Node.js 登場 サーバでも動く ES2015 で 大きく進化 毎年少しずつ 機能を追加 1995 1997 2009 2015 2016〜 let ・ const ・ class ・ Promise ・ アロー関数
JavaScript の歩み。この資料は、2015 年以降の書き方(モダンな JavaScript)で書く

まずは 1 行動かしてみます。下の「▶ 実行」を押すと、このページの中でコードが動き、結果が黒い欄に出ます。

console.log("こんにちは、JavaScript!");
console.log(1 + 2);
こんにちは、JavaScript!
3

console.log は、値を画面(コンソール)に出す命令です。Java の System.out.println、C# の Console.WriteLine、VBA の Debug.Print に当たります。この資料では、ほとんどの例でこれを使って結果を確かめます。

Java ・ C# ・ VBA から来た人へ: 名前は似ていますが、JavaScript と Java は別の言語です。生まれたときに、当時人気だった Java にあやかって名付けられただけです。文法の見た目(波かっこ { } や if の書き方)は似ていますが、考え方はかなり違います。

言語と実行環境

JavaScript を学ぶときは、言語そのものと、それを動かす環境を分けて考えると見通しがよくなります。

ブラウザ(Chrome ・ Edge など) 画面の部品(DOM)・クリックなどのイベント 通信(fetch)・保存(localStorage) → 第2部で扱う Node.js ファイルの読み書き・フォルダの一覧 コマンドラインのツール・Web サーバ → 第1部の実行環境 ECMAScript(言語そのもの) 変数 ・ 型 ・ 関数 ・ オブジェクト ・ クラス ・ Promise … どちらでも同じに動く
言語は共通で、その上に環境ごとの機能が載る

第1部では Node.js を実行環境として、言語そのものを学びます。ただし言語の部分はブラウザでも同じに動くので、この資料の「▶ 実行」ボタンはブラウザの中で実際にコードを動かしています。ファイルの読み書きのように Node.js にしか無い機能だけは、ブラウザでは動かせません。そうした例は、Node.js で動かしたときの結果を記録して見せます。

ヒント: 調べものをするときは、知りたいのが「言語」なのか「環境」なのかを意識すると、検索がうまくいきます。たとえば「配列を並べ替えたい」は言語の話、「ファイルを読みたい」は Node.js の話、「ボタンの色を変えたい」はブラウザの話です。

Java ・ C# ・ VBA との違い

最初に戸惑いやすい違いを表にまとめます。細かいことは、それぞれの章で扱います。

項目Java ・ C#VBAJavaScript
型の決まり方変数に型を書き、コンパイル時に確かめるDim x As Long。書かなければ Variant変数に型は無い。値が型を持つ
実行の前にコンパイルが要るエディタで実行コンパイル不要。書いたらすぐ動く
プログラムの入口main メソッドが要るSub を選んで実行ファイルの上から順に実行。入口は要らない
クラスすべてのコードはクラスの中クラスモジュールは任意使わなくてもよい。関数だけで書ける
数値の型int ・ long ・ double …Integer ・ Long ・ Double …ふだん使うのは number の 1 種類だけ
待ち時間のある処理スレッドや async基本的に待つ待たずに先へ進み、後で結果を受け取る(11 章)

入口が要らないことを確かめてみます。クラスも main もありません。上から順に実行されるだけです。

function greet(who) {
  return "ようこそ、" + who + " さん";
}

console.log(greet("ゲスト"));
console.log(greet("チーム"));
ようこそ、ゲスト さん
ようこそ、チーム さん

変数に型が無いことも見ておきます。typeof は値の型を調べる演算子です。同じ変数に、数値を入れた後で文字列を入れられます。

let x = 10;
console.log(typeof x);

x = "十";
console.log(typeof x);
number
string

注意: 型を書かなくてよい分、間違った型の値が入っても実行するまで気づけません。この弱点は 04 章(型変換)で詳しく見ます。型を書けるようにした言語が TypeScript で、この資料を終えた後の進み先になります。

この資料の歩き方

全体の地図

第1部は 13 の資料で、勉強会 4 回と宿題で進めます。★ の付いた章が山場です。前半の山(04 ・ 07)で JavaScript らしい落とし穴を知り、後半の山(09 ・ 11)で最も大事な仕組みを身につけます。

第1回 第2回 第3回 第4回 宿題 01 背景 02 実行環境 03 値と変数 ★ 04 型変換 05 オブジェクト 06 関数 ★ 07 this 08 クラス ★ 09 クロージャ 10 エラー処理 ★ 11 非同期 12 CJS と ESM 13 ハンズオン ★ 前半の山: 04 型変換 ・ 07 this とグローバル ★ 後半の山(最重要): 09 クロージャ ・ 11 非同期 第2部(ブラウザ編)は、第1部を終えてから進む
第1部の地図。左から勉強会の回の順に並ぶ

「▶ 実行」ボタンの使い方

例のコードには、ボタンが付いています。

下のコードを書き換えて、表示される文字を変えてみてください。

const message = "書き換えてみよう";
console.log(message);
console.log(message.length + " 文字");
書き換えてみよう
8 文字

結果はすぐに出るとは限りません。次の例は、1 行目がすぐ出て、2 行目は 1 秒後に出ます。こうした「待つ処理」は 11 章で扱います。

console.log("すぐ表示");
setTimeout(() => console.log("1 秒後に表示"), 1000);
すぐ表示
1 秒後に表示

エラーの読み方

間違いがあると、赤い字でエラーが出ます。エラーが起きた行で処理は止まり、その先は実行されません。

console.log("ここまでは動く");
console.log(undefinedValue);
console.log("ここは実行されない");
ここまでは動く
Uncaught ReferenceError: undefinedValue is not defined

エラーは英語で出ます。形はいつも「エラーの種類: 説明」です。上の例は「ReferenceError(参照のエラー): undefinedValue は定義されていない」という意味です。この資料ではエラーを英語のまま載せ、訳を添えます。

メモ: エラーの文面は、実行するプログラムで少し変わります。この資料の文面は Chrome ・ Edge と Node.js のもので、この 3 つは同じ仕組み(V8)で動くため一致します。Firefox や Safari では言い回しが違うことがあります。先頭の Uncaught は「どこでも捕まえられなかった」という意味で、10 章で扱います。