JavaScript
JavaScript は、ブラウザの動作を制御する、クロスプラットフォームのオブジェクト指向スクリプト言語です。
導入方法
HTML ファイルでは、<script> タグで JavaScript コードを囲みます。形式は次の通りです。
<!DOCTYPE html>
<html>
<body>
<!-- ここは HTML の内容 -->
<script>
// ここに JavaScript コードを書く
function sayHello() {
alert('Hello, World!');
}
sayHello();
</script>
</body>
</html>一般的には、内部スクリプトは <body> タグの下部に置くことをすすめます。
外部 JS ファイルを読み込む場合:
たとえば demo.js という独立した .js ファイルがあります。
function multiply(num1, num2) {
return num1 * num2;
}<!DOCTYPE html>
<html>
<head></head>
<body>
<button onclick="alert(multiply(5, 3))">積を計算</button>
<script src="../js/demo.js"></script>
</body>
</html>構文
基本文法
- Java と同じように、変数名、関数名、その他の名前は大文字小文字を区別します。
- 各行の末尾のセミコロンは、あってもなくてもよいです。
- 波括弧はコードブロックを表します。
if (count == 3) {
alert(count);
}- 出力文
window.alert() を使う // 警告ボックスへ出力。window. は省略できる
document.write() を使う // HTML 出力へ書き込む
console.log() を使う // ブラウザのコンソールへ出力- コメント
// 一行コメント
/* 複数行
コメント */変数
varキーワード(variable の略)で変数を宣言します。- JavaScript は弱い型付けの言語です。変数には異なる型の値を入れられます。
var test = 20;
test = "山田";変数は次の規則に従います。
- 使用できる文字は、英字、数字、アンダースコア(
_)、$です。 - 数字から始めることはできません。
- camelCase を使うことをすすめます。
特殊な変数宣言:
var:
- スコープ:グローバル変数として扱われ、コードブロック外からも読めます。
- 重複定義できます。
var age = 30;
var age = 20;let
- スコープ:ローカル変数です。
- 一度だけ定義できます。
const
- 読み取り専用の定数を宣言します。一度宣言すると、値は変更できません。
データ型
プリミティブ型と参照型があります。
| データ型 | 説明 |
|---|---|
| number | 数値(整数、小数、NaN (Not a Number)) |
| string | 文字、文字列。シングルクォートとダブルクォートのどちらも使えます |
| boolean | 真偽値(true または false) |
| null | オブジェクトが空であることを表します |
| undefined | 宣言した変数が初期化されていない場合のデフォルト値です |
注:
typeof演算子を使うとデータ型を取得できます。
代入演算子
| 演算子 | 説明 |
|---|---|
| = | 右側の値を左側の変数に代入します。 |
| += | 変数に加算を行い、その結果を変数へ代入します。 |
| -= | 変数に減算を行い、その結果を変数へ代入します。 |
関係演算子
| 演算子 | 説明 |
|---|---|
| == | 比較時に、まず型が同じかを判断します。違う場合は型変換を行い、その後で値を比較します。 |
| ===(厳密等価) | 型が違う場合は直接 false を返します。型が同じ場合だけ値を比較します。 |
三項演算子
| 式の形式 | 説明 |
|---|---|
| 条件式 ? true_value : false_value | 条件式を評価し、値が true なら true_value を返し、false なら false_value を返します。 |
データ型変換
1. string 型から number 型へ
- 文字列の字面に従って数値へ変換します。字面が数値でない場合は
NaN(Not a Number)になります。 - 一般的には
parseInt()メソッドを使います。parseInt()関数は文字列の先頭から解析し、数字以外の文字に会うと止まり、解析できた整数値を返します。
let num1 = parseInt("123");
console.log(num1); // 出力:123
let num2 = parseInt("123abc");
console.log(num2); // 出力:123。文字 'a' に会うと解析を止める
let num3 = parseInt("abc");
console.log(num3); // 出力:NaN。先頭が数字ではないためparseInt() のほかに parseFloat() メソッドもあります。これは小数を含む数値を解析できます。
let num4 = parseFloat("3.14");
console.log(num4); // 出力:3.14
let num5 = parseFloat("3.14abc");
console.log(num5); // 出力:3.14。数字以外の文字に会うと小数部分の解析を止めるboolean 型から number 型へ
true は 1、false は 0 に変換されます。
number 型から boolean 型へ
0 と NaN は false に変換され、その他の数値は true に変換されます。
string 型から boolean 型へ
空文字列("")は false に変換され、その他の文字列は true に変換されます。
null 型と undefined 型から boolean 型へ
常に false に変換されます。
制御文
java と同じです。
if () { }
for (; ; ) {}
switch(){}
while
do...while関数
関数(メソッド)は、特定の処理を行うコードブロックです。
定義:
JavaScript の関数は function キーワードで定義します。
// JavaScript は弱い型付けの言語なので、仮引数に型は不要
function functionName(引数1,引数2...){
コードブロック
}
// 戻り値の型を定義する必要はなく、関数内で return すればよい
function add(a,b){
return a + b;
}
// 定義方法2
var functionName = function(引数リスト){
// 実行するコード
}
var add = function(a,b){
return a + b;
}呼び出し:
// 関数呼び出しでは任意の数の引数を渡せる
let result = add(1,2,3);オブジェクト(重要)
基本オブジェクト概要
JavaScript では、重点的に見るべき基本オブジェクトがいくつかあります。Array(配列)、String(文字列)、JSON(JavaScript Object Notation)、ブラウザオブジェクトモデル(BOM)、ドキュメントオブジェクトモデル(DOM)、そして自分で定義できるオブジェクトです。
Array
- 宣言方法
- 方法一:
var 変数名 = new Array();。空配列を作ります。 - 方法二:
var 変数名 = [要素リスト];。
- 方法一:
- 要素アクセス:インデックスで配列要素にアクセスします。形式は
arr[インデックス] = 値;です。 - 特徴:長さも型も可変です。いつでも要素を追加・削除でき、配列内には異なる型のデータを入れられます。例:
[1, "hello", true]。 - 属性:
length:配列要素の数を設定、または返します。
- メソッド:
forEach():配列内の値を持つ各要素を走査し、渡した関数を一回ずつ呼び出します。例:
let arr = [1, 2, 3];
arr.forEach((e) => {
console.log(e);
});push():新しい要素を配列の末尾に追加し、新しい長さを返します。splice(開始インデックス, 削除数):配列から要素を削除します。
// 要素を削除
array.pop() // 配列の最後の要素を削除
array.shift() // 配列の最初の要素を削除
array.splice(int index,int deleteCount) // index から deleteCount 個の要素を削除
// 配列を切り出す
let arrM = array.slice(int start,int end) // start から end までを切り出す。左閉右開
// 配列を結合
arr1,arr2
let arr3 = arr1.concat(arr2)
// 文字列から配列へ
let str = 'abc,defg'
let arr = str.split('') // 各文字を配列の一要素に変換
let arr = str.split(',') // カンマを区切り文字として文字列を配列に分割
// 配列から文字列へ
let arr = ['a','b','c']
let str = arr.join('') // 配列を文字列に変換し、間には空文字を入れる
// 配列をソート
let arr = [1,2,3,4,5]
arr.sort() // 昇順。デフォルトでは unicode コード順でソート
// アラビア数字としてソートしたい場合は次のように書く
arr.sort(function(a,b){return a-b})
arr.sort((a,b) => a-b)
// 逆順
arr.reverse()
arr.reverse((a,b) => b-a)String
- 宣言方法:
- 方法一:
var 変数名 = new String("..."); - 方法二:
var 変数名 = "..."。こちらのほうがよく使われます。例:var str2 = "world";。
- 方法一:
- 属性:
length:文字列の長さを表します。
- メソッド:
charAt(添字):指定位置の文字を返します。indexOf("文字列"):文字列を検索し、最初に現れたインデックスを返します。存在しない場合は -1 を返します。trim():文字列の両端の空白を削除し、新しい文字列を返します。substring(開始添字, 終了添字):二つの指定インデックス間の文字を取り出します(先頭を含み、末尾を含みません)。
JavaScript カスタムオブジェクト
- 定義:
var オブジェクト名 = {
属性名1: 属性値1,
...
属性名n: 属性値n,
関数名: function(仮引数リスト) {}
};
var person = {
name: "Alice",
age: 25,
sayHello: function () {
console.log("Hello!");
}
};- 呼び出し:
オブジェクト名.属性名;で属性にアクセスします。オブジェクト名.関数名();で関数を呼び出します。
JSON
- 概念:JSON は JavaScript オブジェクト表記法で書かれたテキストです。すべての
keyはダブルクォートで囲む必要があります。 - 定義例:
var 変数名 = '{"key1": value1, "key2": value2}';(配列は角括弧に入れる必要があります)。例:var user = '{"name": "Bob", "age": 30}';。 - JSON 文字列から JS オブジェクトへ:
JSON.parse()メソッドを使います。例:
var userStr = '{"name": "Bob", "age": 30}';
var jsObject = JSON.parse(userStr);
console.log(jsObject.name);- JS オブジェクトから JSON 文字列へ:
JSON.stringify()メソッドを使います。例:
var person = {name: "Charlie", age: 35};
var jsonStr = JSON.stringify(person);
console.log(jsonStr);BOM(ブラウザオブジェクトモデル)
- 概念:ブラウザオブジェクトモデルです。JavaScript がブラウザと対話できるように、ブラウザの各部分をオブジェクトとして扱います。
- Window ブラウザウィンドウオブジェクト(
window.は省略できます):- 属性:
history:Historyオブジェクトへの読み取り専用参照です。location:ウィンドウまたはフレームのLocationオブジェクトです。navigator:Navigatorオブジェクトへの読み取り専用参照です。
- メソッド:
alert():メッセージと確認ボタンを持つ警告ボックスを表示します。confirm():メッセージ、確認ボタン、キャンセルボタンを持つダイアログを表示し、boolean値を返します。例:var result = confirm("操作を確認しますか?"); console.log(result);。ユーザーが押したボタンによりtrueまたはfalseを返します。setInterval():指定した周期(ミリ秒)で関数または式を呼び出します。例:setInterval(() => { console.log("1000ミリ秒ごとに実行"); }, 1000);。setTimeout():指定したミリ秒後に関数または式を呼び出します。例:setTimeout(() => { console.log("3000ミリ秒後に実行"); }, 3000);。
- 属性:
- location オブジェクト(呼び出し方法:
window.location.属性):- 属性:
href:完全なURLを設定または返します。例:window.location.href = "https://www.example.com";は指定サイトへ移動します。
- 属性:
DOM(ドキュメントオブジェクトモデル)
概念と役割:
- HTML などのマークアップ言語の構成部分を、対応するオブジェクトとして扱います。例:
Document(文書全体のオブジェクト)、Element(要素オブジェクト)、Attribute(属性オブジェクト)、Text(テキストオブジェクト)、Comment(コメントオブジェクト)など。 - JavaScript は DOM を通じて HTML を操作できます。たとえば、要素内容の変更、CSS スタイルの変更、DOM イベントへの反応、要素の追加と削除などです。
- HTML などのマークアップ言語の構成部分を、対応するオブジェクトとして扱います。例:
要素の取得方法:
- id 属性値で取得:単一の
Elementオブジェクトを返します。例:var h1 = document.getElementById('h1');。 - タグ名で取得:
Elementオブジェクト配列を返します。例:var divs = document.getElementsByTagName('div');。 - name 属性値で取得:
Elementオブジェクト配列を返します。例:var hobbys = document.getElementsByName('hobbys');。 - class 属性値で取得:
Elementオブジェクト配列を返します。例:var clss = document.getElementsByClassName('cls');。
- id 属性値で取得:単一の
イベントバインディング
一、タグ内のイベント属性でバインディングする
<input type="button" onclick="on()" value="ボタン1">
<script>
function on() {
alert("クリックされました");
}
</script>この方法では、HTML タグ内でイベント属性(ここでは onclick)を直接使い、その要素がクリックされた時に実行する JavaScript 関数を指定します。ページ読み込み後、ブラウザは <input> タグ内の onclick="on()" を解析し、このボタンをクリックすると on 関数を呼び出すと判断します。ボタンがクリックされると、ブラウザは on 関数を実行し、「クリックされました」という警告ボックスを表示します。
二、DOM 要素属性でバインディングする
<input type="button" id="btn" value="ボタン2">
<script>
document.getElementById('btn').onclick = function () {
alert('クリックされました!');
}
</script>ここでは、まず document.getElementById('btn') で id="btn" を持つ <input> ボタン要素を取得します。その後、匿名関数をその要素の onclick 属性に代入します。これにより、ボタンがクリックされた時に匿名関数が実行され、「クリックされました!」という警告ボックスが表示されます。この方法は、JavaScript コードで対応する DOM 要素を取得してから、動的にイベント処理関数をバインドします。HTML コードと JavaScript コードをある程度分離できます。
