モダンJavaScript - aktnk/til GitHub Wiki
-
DOM:Document Object Model,HTMLなどを解釈し木構造で表現したもの
- jQuery等ではDOMを直接操作
$('ul').append('<li>〇〇</li>');
- jQuery等ではDOMを直接操作
-
仮想DOM:JavaScriptのオブジェクトで仮想的に作られたDOM。ReactやVueでは直接DOMを操作せず、JavaScript上で仮想DOMを操作し、差分(変更分のみ)をDOMに反映
-
ECMAScript:JavaScriptの標準規格、毎年一回発表されそのときの西暦を使いES20**と表記される。なおECMAは欧州電子計算機工業会(European COmputer Manufacturers Association)のこと。ES2015が多くの機能が追加され(Class構文、テンプレート文字列、アローファンクション…)、転換期となった。
-
モジュールバンドラーwebpack(最近はviteもある):開発時は別々のファイルで扱うが、最終的には複数のJavaScript、CSS、imageファイルを1つにまとめて扱う
-
トランスパイらBABEL:新しいJavaScriptの記法を古い記法に変換
-
SPA:Single Page Application,モダンJavaScriptはSPAが基本。HTMLは1つでJavaScriptで画面を書き換えて実現する方法。従来のようにリクエストしたHTMLを毎回取得するのではなく、最初にHTMLをうけとった後はデータだけもらい表示する。
- <script>タグによるJavaScriptファイルの読み込みから、Node.jsによるnpm/yarnのパッケージマネージャを使用する形になり、下記のメリットあり * 依存関係の解決 * 公開されているパッケージが利用できる
- npm/yarnの基本動作
- package.jsonからpackage-lock.json(yarn.lock)が自動生成され、依存関係を解決
- これらに従い、パッケージのレジストリNPMから、node_modules配下に各モジュールのjsファイル等が配置される * node_modulesはNPMから取得できるので、GitHubにあげて管理しない
-
var,let,constで変数宣言
- var変数:再宣言可能、値の上書き可能
- let変数:再宣言不可、値の上書き可能
- const変数:再宣言不可、値の上書き不可、ただし、const定義したオブジェクトや配列はその属性や要素の変更可能
-
関数の定義
- functionで定義
function func1(str) { return str; } console.log(func1('func1が呼び出されました'));
- 一度変数に代入して利用
const func2 = function (str) { return str; }; console.log(func2('func2が呼び出されました'));
- アロー関数
const func3 = (str) => { return str; }; console.log(func3('func3が呼び出されました'));
- リターンが単一行の場合{}は省略可
const func3 = (str) => str;
- リターンがオブジェクトの場合()でくくると複数行でもOK
const func4 = (a, b) => ({ first: a, second: b, });
- functionで定義
-
テンプレート文字列による変数の埋め込み
const name = 'World'; const message = `Hello, ${name}`; console.log(message);
-
分割代入:オブジェクトの属性値、配列の各要素の値を取り出す記法
-
デフォルト値の指定:関数の引数や、分割代入の際、=(値)をかくことでデフォルト値を指定できる
-
オブジェクトの省略記法:オブジェクトの属性名は変数名と同じ場合は、属性の記述を省略できる
-
配列の要素をすべて処理する場合は、スプレッド構文
...(配列名)
で記述できる -
配列arr1を配列arr2にコピー:
const arr2 = arr1:
とすると、参照がコピーされるので、arr2[0]=arr2[0]*2;
すると、arr1[0]の値もかわってしまうので、スプレッド構文を使うconst arr2 = [...arr1];
-
配列の繰り返し
- 従来の書き方
const arr = ['A', 'B', 'C']; for (let index = 0; index < nameArr.length; index++) { console.log(arr[index]); };
- mapを使った書き方
arr.map((elem) => { console.log(elem); });
- 従来の書き方
-
論理和(||)・論理積(&&)と短絡演算子とtruthy/falsy
- expr1 || expr2 は expr1を論理値に変換しtruthyだったとき、expr1が返され、expr2は評価されない
- expr1 && expr2 は expr1を論理値に変換しfalsyだったとき、expr1が返され、expr2は評価されない
- 参照:JavaScript MDN 論理積