経緯
- Reactを学習していてJavaScript(以下JS)の基本構文の理解が足りていないと感じので
こちらのサイトを元に学習し直した。 - 自分が重要だと思った、知らなかった箇所に焦点を当ててまとめる。
まとめ
- JavaScriptはデータの型を明示しなくても暗黙的にデータの型を変換してくれる。(暗黙的な型変換)
例1
1 == "1";
>> true
// "1"は文字列(string)になっているが、==だと判定を行う際に暗黙的な型変換を行う
- 例1のような暗黙的な型変換を回避するには上記の例なら厳密等価演算子(===)を使うことで、判定を行う際に暗黙的な型変換を回避することができる。
1 === "1";
>> false
- オブジェクトのプロパティにアクセスする際、プロパティ名は文字列型に変換される(暗黙的な型変換)
また、オブジェクト内にオブジェクトをプロパティ名として定義している場合、
そのプロパティは文字列"[object Object]"になってしまう。
例2
const obj = {};
const key1 = { object: 1 };
obj[key1] = "1";
console.log(obj);
>> { "[object Object]": "1" }
// プロパティ名に定義しているobj[key1]が"[object Object]"になっている。
- オブジェクト内のプロパティ名と値が一緒の場合、値を省略することができる。
※ES2015から有効な記法
const name1 = "名前";
const name2 = "なまえ";
const obj = {
name1,
name2: name2
};
console.log(obj);
>> {"name1":"名前","name2":"なまえ"}
- ArrayやFunctionでもtoStringなどのプロトタイプメソッドが使えるのはObjectを継承しているため。
※プロトタイプメソッドと同名のオブジェクトを定義した場合はプロトタイプメソッドに定義したオブジェクトが上書きされる。