JavaScriptの基本的な機能
JavaScriptはウェブページに動的な要素を追加するためのスクリプト言語で、HTMLとCSSとともにウェブ開発の三大要素として挙げられます。
初心者でも理解しやすいように、JavaScriptの基本的な機能を15項目にわけて解説します。
1. 変数
JavaScriptではデータを格納するために、var
、let
、const
の3種類のキーワードを使って変数を宣言します。
それぞれには微妙に異なる挙動と使いどころがあります。
ソースコード例
1 2 3 4 |
var a = 10; let b = 20; const c = 30; console.log(a, b, c); // 10 20 30 |
出力結果
10 20 30
var
はfunction scopeを持ち、let
とconst
はblock scopeを持ちます。
また、const
は一度定義したら値の変更ができません。
2. データ型
JavaScriptにはいくつかの基本的なデータ型があります。
それらは数値(Number)、文字列(String)、ブーリアン(Boolean)、null、undefined、オブジェクト(Object)の6つです。
データ型一覧
データ型 | 説明 |
Number | 数値を扱うための型 |
String | 文字列を扱うための型 |
Boolean | 真偽値(true/false)を扱うための型 |
null | 値が存在しないことを示す型 |
undefined | 値が未定義であることを示す型 |
Object | 複数の値をまとめて扱うための型 |
2.1 数値(Number)
JavaScriptでは、整数や浮動小数点数など、全ての数値をNumber型として扱います。
具体的な例を見てみましょう。
ソースコード例
1 2 3 4 5 |
let num1 = 123; // 整数 let num2 = 12.3; // 浮動小数点数 console.log(num1); console.log(num2); |
出力結果
123 12.3
2.2 文字列(String)
文字列はテキストデータを扱うための型で、シングルクオート(')またはダブルクオート(")で囲むことで作成できます。
さらに、バッククオート(`)を使って文字列を作成すると、変数を直接埋め込むことができます。
これをテンプレートリテラルと呼びます。
ソースコード例
1 2 3 4 5 6 7 |
let str1 = 'Hello'; // シングルクオートで囲む let str2 = "World"; // ダブルクオートで囲む let str3 = `Hello, ${str2}!`; // テンプレートリテラル console.log(str1); console.log(str2); console.log(str3); |
出力結果
Hello World Hello, World!
2.3 ブーリアン(Boolean)
ブーリアンは真偽値を表現するための型で、trueまたはfalseの2つの値しか持ちません。
以下に例を示します。
ソースコード例
1 2 3 4 5 |
let bool1 = true; let bool2 = false; console.log(bool1); console.log(bool2); |
出力結果
true false
2.4 nullとundefined
nullとundefinedは特殊な値で、変数が何も値を持っていないことを示すために使います。
ただし、nullは変数が意図的に値を持たないことを示し、undefinedは変数がまだ値を持っていないことを示します。
ソースコード例
1 2 3 4 5 |
let val1 = null; let val2; console.log(val1); // null console.log(val2); // undefined |
出力結果
null undefined
2.5 オブジェクト(Object)
JavaScriptのオブジェクトは、複数の値をまとめて扱うためのデータ型です。
オブジェクトは、キー(プロパティ名)と値のペアで構成されています。
以下に例を示します。
ソースコード例
1 2 3 4 5 6 7 |
let obj = { name: 'John', age: 20 }; console.log(obj.name); // 'John' console.log(obj.age); // 20 |
出力結果
John 20
-
オブジェクトについてはコチラ【JavaScript】オブジェクト(連想配列)の初期化、検索、宣言、ループなど徹底解説!
はじめに JavaScriptにおける連想配列について知りたいですか?それなら、あなたは正しい場所に来ました。 この記事では、JavaScriptの連想配列の基本から、より高度なテクニックまで、一緒に ...
続きを見る
2.6 配列(Array)
配列も複数の値をまとめて扱うためのデータ型ですが、配列はインデックス(番号)によって値を管理します。
以下に例を示します。
ソースコード例
1 2 3 4 5 |
let arr = ['apple', 'banana', 'cherry']; console.log(arr[0]); // 'apple' console.log(arr[1]); // 'banana' console.log(arr[2]); // 'cherry' |
出力結果
apple banana cherry
-
配列についてはコチラ【JavaScript】配列の使い方を徹底解説!!値の追加、修正、削除、ループ処理、mapメソッド、filterメソッド
はじめに JavaScriptは、ウェブ開発において不可欠な言語です。 特に配列の操作は、日々の開発作業で頻繁に遭遇するため、その方法を習得することは極めて重要です。 この記事では、JavaScrip ...
続きを見る
3. 演算子
JavaScriptでは、数値計算や文字列の結合、条件判断などを行うために様々な演算子が用意されています。
ここでは、よく使われる基本的な演算子について説明します。
3.1 算術演算子
算術演算子は、数値の計算を行うための演算子です。加算(+), 減算(-), 乗算(*), 除算(/), 余り(%)などがあります。
ソースコード例
1 2 3 4 5 6 7 8 |
let a = 10; let b = 3; console.log(a + b); // 13 console.log(a - b); // 7 console.log(a * b); // 30 console.log(a / b); // 3.3333333333333335 console.log(a % b); // 1 |
出力結果
13 7 30 3.3333333333333335 1
3.2 文字列結合演算子
JavaScriptでは、「+」演算子を使って文字列を結合することができます。
以下に例を示します。
ソースコード例
1 2 3 4 |
let str1 = "Hello, "; let str2 = "World!"; console.log(str1 + str2); // 'Hello, World!' |
出力結果
Hello, World!
3.3 比較演算子
比較演算子は、2つの値を比較し、その結果を真偽値(true/false)で返す演算子です。
等しい(==), 等しくない(!=), 大なり(>), 小なり(<), 大なりイコール(>=), 小なりイコール(<=) などがあります。
ソースコード例
1 2 3 4 5 6 7 8 9 |
let a = 10; let b = 20; console.log(a == b); // false console.log(a != b); // true console.log(a > b); // false console.log(a < b); // true console.log(a >= b); // false console.log(a <= b); // true |
出力結果
false true false true false true
3.4 論理演算子
論理演算子は、真偽値(true/false)を操作するための演算子です。
AND (&&), OR (||), NOT (!) などがあります。
ソースコード例
1 2 3 4 5 6 |
let a = true; let b = false; console.log(a && b); // false console.log(a || b); // true console.log(!a); // false |
出力結果
false true false
3.5 条件(三項)演算子
条件(三項)演算子は、「条件 ? 値1 : 値2」の形で使われ、条件がtrueの場合は値1を、falseの場合は値2を返します。
以下に例を示します。
ソースコード例
1 2 3 |
let a = 10; console.log(a > 5 ? '大きい' : '小さい'); // '大きい' |
出力結果
大きい
4. 制御構文
4.1 if文
JavaScriptにおいて、特定の条件が満たされた時だけ特定の処理を行いたい場合、if文を使用します。
基本的な書き方は以下の通りです。
ソースコード例
1 2 3 4 5 6 7 |
let a = 10; if (a > 5) { console.log('大きい'); // '大きい' } else { console.log('小さい'); } |
出力結果
大きい
-
さらに詳しく知りたい方はコチラ【JavaScript】if文について徹底解説!!if文とswitch文の使い方を学ぼう!!
【完全ガイド】Javaスクリプトのif文をマスターしよう! はじめに 「if」と一言で言っても、プログラミングにおける"もしも"は非常に強力です。 JavaScriptのif文について学ぶことで、プロ ...
続きを見る
4.2 for文
for文は、特定の処理を繰り返すための制御構文です。
以下に、0から9までを出力する例を示します。
ソースコード例
1 2 3 |
for (let i = 0; i < 10; i++) { console.log(i); // 0から9までを出力 } |
出力結果
0 1 2 3 4 5 6 7 8 9
4.3 while文
while文も繰り返し処理を行う制御構文の一つです。
指定した条件が満たされている間、特定の処理を繰り返します。
ソースコード例
1 2 3 4 5 6 |
let i = 0; while (i < 10) { console.log(i); // 0から9までを出力 i++; } |
出力結果
0 1 2 3 4 5 6 7 8 9
こちらもCHECK
-
【JavaScript】制御構文if文、forループ、break,continueを徹底解説!
JavaScriptの制御構文について理解しよう! JavaScriptには、プログラムの流れを制御するための構文がいくつかあります。これらは非常に重要な概念で、コードを書く上で欠かすことはできません ...
続きを見る
5. 関数
関数は、特定の処理をまとめて名前を付け、それを呼び出すことで処理を実行する機能です。
以下に、2つの数値を足す関数を作る例を示します。
ソースコード例
1 2 3 4 5 |
function add(a, b) { return a + b; } console.log(add(1, 2)); // 3 |
出力結果
3
5.1 無名関数
JavaScriptでは、名前を持たない関数も作成できます。
これを無名関数(または匿名関数)と呼びます。
変数に無名関数を代入し、その変数名で関数を呼び出すことが可能です。
ソースコード例
1 2 3 4 5 |
let add = function(a, b) { return a + b; } console.log(add(1, 2)); // 3 |
出力結果
3
5.2 アロー関数
ES6からは、アロー関数という新しい関数の書き方も導入されました。
アロー関数は、無名関数をより簡潔に書けるようにするものです。
ソースコード例
1 2 3 4 5 |
let add = (a, b) => { return a + b; } console.log(add(1, 2)); // 3 |
出力結果
3
こちらもCHECK
-
【JavaScript】JavaScriptの関数の使い方を学ぼう!! 関数、無名関数、アロー関数(=>)などの使い方を解説します!
JavaScriptの関数について JavaScriptの関数とは、一連の手続きを一つにまとめて名前を付け、何度も再利用できるようにしたものです。関数はコードの再利用性を高め、可読性を向上させ、エラー ...
続きを見る
6. オブジェクト
JavaScriptでは、オブジェクトというデータ構造を使用することができます。
オブジェクトは、キーと値のペア(プロパティ)を複数保持することができます。
キーは文字列またはシンボルであり、値は任意の型のデータを取ることができます。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 |
let obj = { name: 'John', age: 30, greet: function() { return 'Hello, ' + this.name; } } console.log(obj.name); // John console.log(obj.age); // 30 console.log(obj.greet()); // Hello, John |
出力結果
John 30 Hello, John
-
オブジェクトについてはコチラ【JavaScript】オブジェクト(連想配列)の初期化、検索、宣言、ループなど徹底解説!
はじめに JavaScriptにおける連想配列について知りたいですか?それなら、あなたは正しい場所に来ました。 この記事では、JavaScriptの連想配列の基本から、より高度なテクニックまで、一緒に ...
続きを見る
6.1 プロパティの追加と削除
JavaScriptのオブジェクトは動的にプロパティを追加したり削除したりすることができます。
これは他の静的型付け言語とは大きく異なる特徴です。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 |
let obj = { name: 'John', age: 30, } // プロパティの追加 obj.job = 'Engineer'; console.log(obj.job); // Engineer // プロパティの削除 delete obj.age; console.log(obj.age); // undefined |
出力結果
Engineer undefined
こちらもCHECK
7. 配列
JavaScriptの配列は、様々なタイプの要素を含むことができ、サイズは動的に変化します。
また、配列自体もオブジェクトで、便利なメソッドを多数持っています。
ソースコード例
1 2 3 4 5 |
let arr = [1, 2, 3, 4, 5]; console.log(arr.length); // 5 console.log(arr[0]); // 1 console.log(arr[arr.length - 1]); // 5 |
出力結果
5 1 5
7.1 配列の操作
JavaScriptの配列は様々なメソッドを持っており、配列の操作が非常に容易です。
例えば、pushメソッドを使うと配列の末尾に要素を追加でき、popメソッドを使うと配列の末尾の要素を削除できます。
ソースコード例
1 2 3 4 5 6 7 |
let arr = [1, 2, 3, 4, 5]; arr.push(6); console.log(arr); // [1, 2, 3, 4, 5, 6] arr.pop(); console.log(arr); // [1, 2, 3, 4, 5] |
出力結果
[1, 2, 3, 4, 5, 6] [1, 2, 3, 4, 5]
こちらもCHECK
-
【JavaScript】配列の使い方を徹底解説!!値の追加、修正、削除、ループ処理、mapメソッド、filterメソッド
はじめに JavaScriptは、ウェブ開発において不可欠な言語です。 特に配列の操作は、日々の開発作業で頻繁に遭遇するため、その方法を習得することは極めて重要です。 この記事では、JavaScrip ...
続きを見る
8. プロトタイプベースの継承
JavaScriptはプロトタイプベースの言語です。
これは、オブジェクトが他のオブジェクトからプロパティとメソッドを継承できるということを意味します。クラスベースの言語とは異なり、JavaScriptではクラスを作成する代わりにオブジェクト(プロトタイプ)を複製します。
プロトタイプベースの継承を理解するためには、まずJavaScriptのオブジェクトがプロパティとメソッドをどのように継承するのかを見てみましょう。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 |
let animal = { eats: true }; let rabbit = { jumps: true, __proto__: animal }; console.log(rabbit.eats); // true console.log(rabbit.jumps); // true |
出力結果
true true
8.1 プロトタイプチェーン
JavaScriptでは、オブジェクトが他のオブジェクトからプロパティを継承することができます。これを可能にするのが、プロトタイプチェーンです。
プロトタイプチェーンは、プロパティやメソッドの検索を助けるための仕組みです。プロパティやメソッドが直接的にオブジェクトに存在しない場合、JavaScriptはそのオブジェクトのプロトタイプチェーンを辿ります。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
let animal = { eats: true }; let rabbit = { jumps: true, __proto__: animal }; let longEar = { earLength: 10, __proto__: rabbit }; console.log(longEar.jumps); // true console.log(longEar.eats); // true console.log(longEar.earLength); // 10 |
出力結果
true true 10
8.2 thisとプロトタイプチェーン
JavaScriptでは、プロトタイプチェーンを通じて継承したメソッドが呼び出されたとき、そのメソッド内のthisキーワードは、そのメソッドを持つオリジナルのオブジェクトではなく、メソッドを呼び出したオブジェクトを参照します。
これは非常に重要な概念です。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 |
let animal = { eats: true, walk() { console.log("Animal walk"); } }; let rabbit = { jumps: true, __proto__: animal }; rabbit.walk(); // Animal walk |
出力結果
Animal walk
9. 非同期処理とPromise
JavaScriptはシングルスレッドの言語ですが、非同期処理を通じて複数のタスクを同時に扱うことができます。特にWeb開発では、非同期処理は重要な要素となっており、APIリクエストの送信やファイルの読み込みなど、時間のかかる操作をバックグラウンドで行い、それが完了した時点で結果を処理する、といった作業が可能になります。
JavaScriptにおける非同期処理の中心的な概念の1つが、Promiseです。Promiseは、非同期操作の結果を表すオブジェクトで、成功(resolve)または失敗(reject)のどちらかの状態を持ちます。
9.1 Promiseの基本
Promiseは以下のように作成します。
ソースコード例
1 2 3 4 5 6 7 8 9 10 |
let promise = new Promise((resolve, reject) => { // 非同期操作 setTimeout(() => { resolve("Success!"); // 操作が成功したらresolveを呼び出す }, 1000); }); promise.then((value) => { console.log(value); // "Success!" }); |
出力結果
Success!
9.2 Promiseチェーン
Promiseは、thenメソッドを使ってチェーン化することができます。これにより、非同期操作の結果に基づいた複数の処理を順番に行うことが可能になります。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
let promise = new Promise((resolve, reject) => { setTimeout(() => { resolve(1); }, 1000); }); promise .then((value)=> { console.log(value); // 1 return value + 1; // thenメソッドからの戻り値は次のthenメソッドに渡される }) .then((value) => { console.log(value); // 2 return value + 1; }) .then((value) => { console.log(value); // 3 }); |
出力結果
1 2 3
9.3 Promiseのエラーハンドリング
Promiseでは、エラーが発生した場合にはreject関数を呼び出します。そして、エラーはcatchメソッドを使ってハンドリングできます。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 |
let promise = new Promise((resolve, reject) => { setTimeout(() => { reject("Error!"); // 非同期操作が失敗 }, 1000); }); promise .then((value) => { console.log(value); }) .catch((error) => { console.error(error); // Error! }); |
出力結果
Error!
10. Async/Await
Async/Awaitは、JavaScriptの非同期処理をより直感的に書くための構文です。Async/AwaitはES2017で導入され、Promiseのシンタックスシュガー(より読みやすく書きやすい表記法)と言えます。
10.1 Async関数
Async関数は、非同期処理を含む関数を宣言するための特殊な構文です。asyncキーワードを関数の前に置くことで、その関数は自動的にPromiseを返すようになります。
ソースコード例
1 2 3 4 5 6 7 |
async function myFunction() { return "Hello, world!"; } myFunction().then((value) => { console.log(value); // "Hello, world!" }); |
出力結果
Hello, world!
10.2 Await式
Await式を使うと、Promiseがresolveまたはrejectされるのを待つことができます。これにより、非同期処理をあたかも同期処理のように書くことができます。
ただし、await式はasync関数内でのみ使用することができます。
ソースコード例
1 2 3 4 5 6 7 8 9 10 |
async function myFunction() { let promise = new Promise((resolve, reject) => { setTimeout(() => resolve("Hello, world!"), 1000); }); let result = await promise; // Promiseがresolveされるのを待つ console.log(result); // "Hello, world!" } myFunction(); |
出力結果
Hello, world!
10.3 Async/Awaitのエラーハンドリング
Async/Awaitでは、エラーハンドリングはtry/catchブロックを用いて行います。非同期操作が失敗し、Promiseがrejectされると、それはasync関数内でエラーをスローします。そして、そのエラーはtry/catchブロックで捕捉することができます。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
async function myFunction() { try { let promise = new Promise((resolve, reject) => { setTimeout(() => reject("Error!"), 1000); }); let result = await promise; // Promiseがrejectされると、エラーがスローされる console.log(result); } catch (error) { console.error(error); // "Error!" } } myFunction(); |
出力結果
Error!
11. モジュール
大規模なJavaScriptアプリケーションを構築する際には、コードを複数のファイルに分割することが一般的です。これにより、コードの再利用性と可読性が向上します。JavaScriptでは、これを実現するための概念としてモジュールがあります。
11.1 モジュールのエクスポート
モジュールとは、独立したJavaScriptのコードの塊であり、それ自体が一つのスクリプトとして機能します。モジュール内で定義された関数や変数は、デフォルトではプライベートであり、他のスクリプトからはアクセスできません。それらを外部からアクセス可能にするためには、それらをエクスポートする必要があります。
JavaScriptでは、exportキーワードを使って関数や変数をエクスポートできます。
ソースコード例(myModule.js)
1 2 3 4 |
// myModule.js export const myFunction = () => { console.log("Hello, world!"); }; |
11.2 モジュールのインポート
エクスポートされた関数や変数は、他のスクリプトからインポートすることができます。importキーワードを使ってモジュールをインポートできます。
ソースコード例(main.js)
1 2 3 4 |
// main.js import { myFunction } from './myModule.js'; myFunction(); // "Hello, world!" |
出力結果
Hello, world!
11.3 デフォルトエクスポート
各モジュールは、デフォルトエクスポートを一つ持つことができます。これは、そのモジュールが主に提供する機能を表します。defaultキーワードを使ってデフォルトエクスポートを指定できます。
ソースコード例(myModule.js)
1 2 3 4 5 6 |
// myModule.js const myFunction = () => { console.log("Hello, world!"); }; export default myFunction; |
デフォルトエクスポートされた値は、インポートする際に任意の名前を付けることができます。
ソースコード例(main.js)
1 2 3 4 |
// main.js import func from './myModule.js'; func(); // "Hello, world!" |
出力結果
Hello, world!
12章: HTML要素の取得
JavaScriptはWebページの動的な操作を可能にする強力なツールです。その基礎的な機能の一つが、HTML要素の取得です。JavaScriptを使ってHTML要素を取得することで、その要素の内容を読み取ったり、変更したりすることが可能となります。
この章では、主にdocumentオブジェクトのメソッドを使用してHTML要素を取得する方法をいくつか紹介します。
12.1 document.getElementById
最も基本的な要素の取得方法は、要素のid属性を指定して取得する方法です。これはdocumentオブジェクトのgetElementByIdメソッドを使用します。
ソースコード例
1 2 3 |
// HTML <div id="myElement">Hello, world!</div> |
1 2 3 |
// JavaScript let el = document.getElementById('myElement'); console.log(el.textContent); // "Hello, world!" |
出力結果
Hello, world!
12.2 document.getElementsByClassName
次に、class属性を指定して要素を取得する方法です。これはdocumentオブジェクトのgetElementsByClassNameメソッドを使用します。このメソッドはHTMLCollectionという、取得した要素のコレクションを返します。
ソースコード例
1 2 3 4 |
// HTML <div class="myClass">Hello</div> <div class="myClass">world!</div> |
1 2 3 4 5 |
// JavaScript let els = document.getElementsByClassName('myClass'); for (let i = 0; i < els.length; i++) { console.log(els[i].textContent); // "Hello", "world!" } |
出力結果
Hello world!
12.3 document.querySelectorとdocument.querySelectorAll
最後に、CSSセレクタを指定して要素を取得する方法です。これはdocumentオブジェクトのquerySelectorメソッドとquerySelectorAllメソッドを使用します。querySelectorメソッドは、指定したCSSセレクタに一致する最初の要素を返します。一方、querySelectorAllメソッドは、指定したCSSセレクタに一致する全ての要素をNodeListというコレクションで返します。
ソースコード例
1 2 3 4 |
// HTML <div class="myClass">Hello</div> <div class="myClass">world!</div> |
1 2 3 4 5 6 7 8 |
// JavaScript let el = document.querySelector('.myClass'); console.log(el.textContent); // "Hello" let els = document.querySelectorAll('.myClass'); for (let i = 0; i < els.length; i++) { console.log(els[i].textContent); // "Hello", "world!" } |
出力結果
Hello Hello world!
こちらもCHECK
-
【JavaScript】JavaScriptのHTML操作の使い方を学ぼう!! HTML要素の取得、追加、修正、削除、ループ処理による複数取得、イベントリスナーの追加方法を解説します!
JavaScriptでHTML要素を操作する JavaScriptを使用してHTMLの要素を取得、追加、修正、削除する方法について説明します。 これらの技術は、ウェブページを動的に制御するために頻繁に ...
続きを見る
KindleUnlimited会員であれば、全ての本をご覧頂けます。 アロー関数と便利な関数を理解すれば、JavaScriptの世界が変わる
まとめ
JavaScriptを使ってHTML要素を取得することは、Webページを動的に操作する基礎です。idやclassを指定して要素を取得したり、CSSセレクタを使用して要素を取得したりすることができます。これらの技術を駆使することで、HTML要素の内容を自由自在に操作することができます。
今回学んだことをぜひ実際のコードに活かしてみてください。
最後まで読んで頂き、ありがとうございました。少しでもお役にたてたなら幸いです!