コンテンツにスキップ

JavaScript/文法

出典: フリー教科書『ウィキブックス(Wikibooks)』

JavaScriptの文法

[編集]

JavaScriptは、他のプログラミング言語と多くの類似点を持ちながらも、いくつか独自の特徴があります。ここでは、JavaScriptの文法の重要な特徴を紹介します。

類似点:

[編集]

C言語系の構文

[編集]

JavaScriptはC言語系の構文を採用しており、変数宣言、制御構造、演算子などがCやC++と類似しています。

// C言語風の変数宣言
const num = 42;  // 再代入しないので const を使用

// C言語風のforループ
for (let i = 0; i < 5; i++) {
    console.log(i);
}

関数

[編集]

関数も多くのプログラミング言語と似た方法で定義され、呼び出すことができます。ES6ではアロー関数(Arrow Functions)が導入され、より簡潔に関数を定義できます。

// 関数の定義(通常の関数)
function greet(name) {
    console.log("Hello, " + name + "!");
}

// アロー関数を使用した例
const greetArrow = (name) => {
    console.log(`Hello, ${name}!`);
};

// 関数の呼び出し
greet("John");
greetArrow("Jane");

条件分岐と繰り返し

[編集]

条件分岐(if-else)や繰り返し(for ループなど)も他の言語と同じように使用されます。

// 条件分岐
const age = 20;
if (age >= 18) {
    console.log("成人です。");
} else {
    console.log("未成年です。");
}

// forループ
for (let i = 0; i < 5; i++) {
    console.log(i);
}

相違点:

[編集]

動的型付け

[編集]

JavaScriptは動的型付け言語であり、変数の型は実行時に決定されます。型を変更することもできるため、柔軟なコードを書くことができます。

const num = 42; // 数値型の値で初期化
let text = "Hello"; // 文字列型で初期化
text = 100; // 数値型の値を代入

オブジェクトとプロトタイプ

[編集]

JavaScriptはプロトタイプベースのオブジェクト指向言語であり、クラスの代わりにプロトタイプを使用してオブジェクトを拡張します。ES6以降はclass構文が導入され、より親しみやすくなりました。

// オブジェクトの作成
const person = {
    name: "Alice",
    age: 30,
    greet() {
        console.log(`Hello, ${this.name}!`);
    }
};

// オブジェクトのプロトタイプ拡張
person.sayHello = function() {
    console.log("Hi there!");
};

クロージャと無名関数

[編集]

JavaScriptではクロージャ(関数内から外部スコープの変数にアクセスする機能)や無名関数(匿名関数)がよく使われます。

// クロージャ
const outerFunction = () => {
    const x = 10;
    const innerFunction = () => {
        console.log(x);
    };
    return innerFunction;
};

const closureFunc = outerFunction();
closureFunc(); // 10

非同期処理とコールバック

[編集]

JavaScriptは非同期処理を得意とし、Promiseasync/awaitを使用して非同期イベントをより直感的に扱うことができます。

// 非同期処理の例(Promise)
setTimeout(() => {
    console.log("Timeout completed.");
}, 1000);

// async/awaitの例
const asyncFunc = async () => {
    await new Promise(resolve => setTimeout(resolve, 1000));
    console.log("Timeout completed.");
};

asyncFunc();

まとめ

[編集]

これらの相違点や特徴を理解することで、JavaScriptの強力な柔軟性と用途の広さが見えてきます。JavaScriptは、ウェブ開発、サーバーサイド開発、モバイルアプリケーション開発など、多様なコンテキストで活用されています。