初学者がJavaScript Primer - 迷わないための入門書を読んだ感想です。
良かったところ
- メソッドの解説だけでなく、どういった使い方ができるかも書かれていた。
- その機能が作られた経緯や歴史が解説されており、理解の向上につながった。
学んだこと
- constは再代入できない変数の宣言。letは再代入が可能な変数の宣言。varは同じ名前の変数が宣言できてしまうことから非推奨となっている。
- 等価演算子(==)は、オペランド同士が異なる型の値の際に、同じ型となるように暗黙的な型変換を行うので厳密等価演算子(==)を使う。
// 文字列の1を数値に変換してから比較される
console.log(1 == "1"); // => true
- Nullish coalescing演算子(??)は左辺の値がnullish(評価結果がnull,undefinedとなる値のこと)なら右辺の評価結果を返す。
値のデフォルト値を指定する場合によく利用される。
const inputValue = 0;
const value = inputValue ?? 10;
// OR演算子(||)の場合は、0だとfalsyな値と評価され10と出力されてしまい、
// 意図しない動作となるのを防げる
console.log(value) // => 0
- NaNはNot a NumberだがNumber型の値であり、何と演算してもNaNになる。また、NaNは自分自身と一致しない特徴を持っている。
- ...(Spread構文)を使うことで、配列リテラル中に既存の配列を展開できる。
const array = [1, 2, 3]
const newArray = [4, ...array, 5]
// concatとは違い任意の場所で展開できる
console.log(newArray) // => [4, 1, 2, 3, 5]
- for文はループ毎に新しいスコープを作成するので、constが使えること。
- Arrow functionはthisを暗黙的な引数として受け付けていない。Arrow function内のthisは外側のスコープを参照するので、他の関数やメソッドとは違いthisを意識しなくていい。
- 非同期処理はコードを順番に処理しているが、一つの非同期処理が終わるのを待たずに次の処理を評価する。
難しかったこと
- thisや非同期処理などの解説は1度読んだだけではあまり理解できなかった。解説も難しいと感じた。
- ボリュームが結構あり、単体での解説では理解できたことも、他の要素と組み合わさるとよくわからない状態になった。