JavaScriptの基本と代表的なメソッドなど

# 概要
ざっと勉強したけどメソッドとかオプションが多く覚えれん…ということでざっくりまとめることにしました。
自分が多少なりに使うものをメモする程度なので網羅しているわけではありません。
PHPから勉強を始めた人間なので、データ型などの基礎もついでにメモします。
if文やfor文といった制御構文は省略します。

# 基礎
## データ型
<table>
<tr>
<th>総称法</th>
<th>データ型</th>
<th>意味</th>
</tr>

<tr>
<td rowspan=3>基本型</td>
<td>string</td>
<td>
文字列の型。「'」または「"」で囲む<br/>
また、「`」で囲むと「${}」内の変数を文字列として出力できる
</td>
</tr>
<tr>
<td>number</td>
<td>整数と浮動小数を扱う型</td>
</tr>
<tr>
<td>boolean</td>
<td>「true」または「false」の型</td>
</tr>

<tr>
<td rowspan=3>参照型</td>
<td>objext</td>
<td>オブジェクトを参照する</td>
</tr>
<tr>
<td>array</td>
<td>配列を参照する</td>
</tr>
<tr>
<td>function</td>
<td>関数を参照する</td>
</tr>
</table>

## 特殊な値
<table>
<tr>
<th>値</th>
<th>意味</th>
<th>確認方法</th>
</tr>

<tr>
<td>NaN</td>
<td>数値ではないことを表す値</td>
<td>isNaN()</td>
</tr>
<tr>
<td>null</td>
<td>
何も参照していない状態<br />
リテラルのため変数に直接入力することができる
</td>
<td>isNull()</td>
</tr>
<tr>
<td>undefined</td>
<td>変数が宣言されているが初期化していない状態</td>
<td>「typeof === 'undefined'」で判定</td>
</tr>
</table>

## const、let、varの違い
<table>
<tr>
<th></th>
<th>const</th>
<th>let</th>
<th>var</th>
</tr>

<tr>
<td>再定義</td>
<td>☓</td>
<td>○</td>
<td>○</td>
</tr>

<tr>
<td>再宣言</td>
<td>☓</td>
<td>☓</td>
<td>○</td>
</tr>

<tr>
<td>スコープ</td>
<td>ブロック</td>
<td>ブロック</td>
<td>ローカル</td>
</tr>
</table>

# 各種メソッド
## Arrayオブジェクト
変数名.メソッド()で記述。

<table>
<tr>
<th>メソッド名</th>
<th>機能</th>
</tr>
<tr>
<td>join('記号')</td>
<td>指定のの区切り文字で1つの文字列に連結する</td>
</tr>
<tr>
<td>toString()</td>
<td>「,」で1つの文字列に連結する</td>
</tr>
<tr>
<td>pop()</td>
<td>配列の最後の要素を削除</td>
</tr>
<tr>
<td>push(a1,a2...)</td>
<td>配列の最後に要素を追加</td>
</tr>
<tr>
<td>shift</td>
<td>配列の先頭の要素を削除</td>
</tr>
<tr>
<td>unshit(a1,a2...)</td>
<td>配列の先頭に要素を追加</td>
</tr>
<tr>
<td>sort()</td>
<td>配列の中身を昇順に並び替え</td>
</tr>
<tr>
<td>reverce()</td>
<td>配列の中身を降順に並び替え</td>
</tr>
<td>slice(m,n)</td>
<td>m番目～n-1番目の要素を取り出して配列で返す</td>
</tr>
<tr>
<td>indexOf()</td>
<td>配列内で引数の値が見つかった位置を返す</td>
</tr>
<tr>
<td>includes()</td>
<td>配列内で引数の値が含まれていればtrueを返す</td>
</tr>
<tr>
<td>entries()</td>
<td>すべてのキーと値を返す</td>
</tr>
<tr>
<td>keys()</td>
<td>すべてのキーを返す</td>
</tr>
<tr>
<td>values()</td>
<td>すべての値を返す</td>
</tr>
</table>


## Stringオブジェクト
変数名.メソッド()で記述。

<table>
<tr>
<th>メソッド名</th>
<th>機能</th>
</tr>
<tr>
<td>charAt(n)</td>
<td>n番目の文字を取得</td>
</tr>
<tr>
<td>charCodeAt(n)</td>
<td>n番目の文字の文字コードを取得</td>
</tr>
<tr>
<td>concat(s1,s2...)</td>
<td>指定の文字列を結合</td>
</tr>
<tr>
<td>splits(s[,n])</td>
<td>指定の値（s）を区切り文字として分割して配列にで返す</td>
</tr>

<tr>
<td>indexOf(s[,n])</td>
<td>指定の文字列（s）の位置を取得。nはオプション引数で開始位置</td>
</tr>
<tr>
<td>slice(m[,n])</td>
<td>m～n-1番目までの文字を取得：nはオプション引数で指定がなければ末尾までを取得する</td>
</tr>
<tr>
<td>substring(m[,n])</td>
<td>m～n-1番目までの文字を取得：nはオプション引数で指定がなければ末尾までを取得する</td>
</tr>
<tr>
<td>substr(m,[,len])</td>
<td>m番目の文字からlen数分の文字列を取得：nはオプション引数で指定がなければ末尾までを取得する</td>
</tr>
<tr>
<td>toLowerCase()</td>
<td>小文字に変換</td>
</tr>
<tr>
<td>toUpperCase()</td>
<td>大文字に変換</td>
</tr>
<tr>
<td>replace(s,rep)</td>
<td>正規表現sに一致した文字をrepで置き換える</td>
</tr>
<tr>
<td>macth(s)</td>
<td>正規表現sと一致した最初の文字列を取得</td>
</tr>
</table>

※ slice(m,n)とsubstring(m,n)の違い
●引数の大小
start>endとなった場合に判定が変わります。
・slice()：空の文字列が返される
・substring()：startとendが交換されたものとして実行される


●引数が0以下の場合
引数に0未満の数値が渡された場合に処理が変わります。
・slice()：負の数は0として扱われる => イメージ：(1, -3) → (1, 0) → (0, 1)
・substring()：0として扱われる


## Numberオブジェクト
変数名.メソッド()で記述

<table>
<tr>
<th>メソッド名</th>
<th>機能</th>
</tr>
<tr>
<td>toFixed()</td>
<td>絶対値を求める</td>
</tr>
<tr>
<td>toPrecision()</td>
<td>引数の値を下回らない最小値の整数を求める</td>
</tr>
<tr>
<td>toString()</td>
<td>引数の値を超えない最大の整数を求める</td>
</tr>

<tr>
<td>round()</td>
<td>少数第1を四捨五入した整数を求める</td>
</tr>
<tr>
<td>max()</td>
<td>最大値を求める</td>
</tr>
<tr>
<td>min()</td>
<td>最小値を求める</td>
</tr>
<tr>
<td>random()</td>
<td>乱数を求める</td>
</tr>
</table>

## Dateオブジェクト
Dateオブジェクトを宣言してから、変数名.メソッド()で記述

<table>
<tr>
<th>メソッド名</th>
<th>機能</th>
</tr>

<tr>
<td>getFullYear()</td>
<td>年の取得：西暦4桁</td>
</tr>
<tr>
<tr>
<td>getYear()</td>
<td>年の取得：西暦2桁（非推奨）</td>
</tr>
<tr>
<td>getMonth()</td>
<td>月の取得：0～11</td>
</tr>
<tr>
<td>getDate()</td>
<td>日の取得：1～31</td>
</tr>
<tr>
<td>getDay()</td>
<td>曜日の取得：0（日曜）～6（土曜）</td>
</tr>
<tr>
<td>gethours()</td>
<td>時間の取得：0～23</td>
</tr>
<tr>
<td>getMinuts()</td>
<td>分の取得：0～59</td>
</tr>
<tr>
<td>getSeconds()</td>
<td>秒の取得：0～59</td>
</tr>
</table>


## Mathオブジェクト
Math.メソッド()で記述

<table>
<tr>
<th>メソッド名</th>
<th>機能</th>
</tr>
<tr>
<td>abs()</td>
<td>絶対値を求める</td>
</tr>
<tr>
<td>ceil()</td>
<td>引数の値を下回らない最小値の整数を求める</td>
</tr>
<tr>
<td>floor()</td>
<td>引数の値を超えない最大の整数を求める</td>
</tr>

<tr>
<td>round()</td>
<td>少数第1を四捨五入した整数を求める</td>
</tr>
<tr>
<td>max()</td>
<td>最大値を求める</td>
</tr>
<tr>
<td>min()</td>
<td>最小値を求める</td>
</tr>
<tr>
<td>random()</td>
<td>乱数を求める</td>
</tr>
</table>

# DOM操作
## ノードの取得（Documetオブジェクト）
Document.メソッド()で記述

<table>
<tr>
<th>メソッド名</th>
<th>機能</th>
</tr>
<tr>
<td>getElementById('id')</td>
<td>指定のidを持つ要素を返す</td>
</tr>
<tr>
<td>getElementByTagName('tag')</td>
<td>指定のタグ名を持つ要素を返す</td>
</tr>
<tr>
<td>getElementByName('mame')</td>
<td>指定のname属性要素を配列で返す</td>
</tr>
<tr>
<td>getElemetnsByClass('class')</td>
<td>指定のクラスを持つ要素を返す</td>
</tr>
<tr>
<td>querySelector('selector')</td>
<td>指定のセレクタと一致する要素を返す</td>
</tr>
<tr>
<td>querySelectorAll('selector')</td>
<td>指定のセレクタと一致する要素を配列で返す</td>
</table>

## HTMLタグの操作
変数名.メソッド()で記述

<table>
<tr>
<th>メソッド名</th>
<th>機能</th>
</tr>
<tr>
<td>createElement()</td>
<td>タグの新規作成</td>
</tr>
<tr>
<td>appendChild()</td>
<td>タグをDOMツリーに追加</td>
</tr>
<tr>
<td>removeChild()</td>
<td>DOMツリーからタグを削除</td>
</tr>
<tr>
<td>replaceChild()</td>
<td>DOMツリーのタグを変更</td>
</tr>
</table>

## HTML（要素・属性・値）の操作

<table>
<tr>
<th>メソッド名</th>
<th>機能</th>
</tr>
<tr>
<td>textContent</td>
<td>表示の文字列を変更：タグは無効</td>
</tr>
<tr>
<td>innnerHTML</td>
<td>表示の文字列を変更：タグは有効</td>
</tr>
<tr>
<td>属性名</td>
<td>タグの属性を変更</td>
</tr>
<tr>
<td>style.属性名</td>
<td>タグに適用されているスタイルを変更</td>
</tr>
</table>

# 各種イベント
"メソッド=属性名"（HTMLタグ内）または、属性名.onメソッド（scriptタグ内）で記述
また、addEventListener()の引数でも同様のイベント処理を記述できる

<table>
<tr>
<th>分類</th>
<th>イベント名</th>
<th>発火タイミング</th>
</tr>

<tr>
<td rowspan=2>読み込み</td>
<td>load</td>
<td>Webページの読込みが完了した時</td>
</tr>
<tr>
<td>unload</td>
<td>Webページに移動した時</td>
</tr>

<tr>
<td rowspan=6>マウス</td>
<td>click</td>
<td>クリック時</td>
</tr>
<tr>
<td>dbclick</td>
<td>ダブルクリック時</td>
</tr>
<tr>
<td>mousedown</td>
<td>マウスを押したタイミング</td>
</tr>
<tr>
<td>mouseup</td>
<td>マウスを押してから離したタイミング</td>
</tr>
<tr>
<td>mouseover</td>
<td>マウスポインタが重なったタイミング</td>
</tr>
<tr>
<td>mouseout</td>
<td>マウスポインタが離れたタイミング</td>
</tr>

<tr>
<td rowspan=3>フォーム</td>
<td>submit</td>
<td>submitを押した時</td>
</tr>
<tr>
<td>reset</td>
<td>restを押した時</td>
</tr>
<tr>
<td>change</td>
<td>対象の値が変化したタイミング</td>
</tr>

<tr>
<td rowspan=2>フォーカス</td>
<td>focus</td>
<td>対象にフォーカスが移動した時</td>
</tr>
<tr>
<td>blur</td>
<td>対象がフォーカスから離れた時</td>
</tr>

<tr>
<td>キーボード</td>
<td>input</td>
<td>文字が入力された時</td>
</tr>
</table>

# 参考
[jsSTUDIO]
(http://js.studio-kingdom.com/)
[JavaScriptリファレンス]
(https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference)
[Node]
(https://developer.mozilla.org/ja/docs/Web/API/Node)
[JavaScript/DOM]
(https://phpjavascriptroom.com/?t=js)