夕方以降は脳みそ死んでる
最近気づいた。教科書は頭に入ってくるのはやっぱり朝だわ。
夕方帰宅して、教科書の中身がすっとために入ってくる確率が非常に低い。なんとなく頭の後頭部も何かが詰まってる感じもする。
ということで、教科書を理解するような時間は朝にした。やっぱりすっと入ってくる確率が高い。でも英語と一緒で、結局なんも考えなくても公文や文章が出来上がるようにわからないうちからものまね社協は必要だと思うので、その作業は頭が半分死んでても体で覚えさせる夕方以降夜にしようと思う。

これをまずはDay30まで、 10日間やってみようと思う。
それは複雑すぎるって、、殺生ですって
以下、私のメモです。無視してやってくだささい
console.log(person.country); // “アメリカ” (もちろん元データもそのまま)
こっちは(オブジェクト+ラベル)なのでアメリカが表示されるのは分かるけど
console.log(country); // “アメリカ” (中身があったので、それが優先された)
こっちはオブジェクト内のラベル名だよね?ラベル名だけコンソールログしてもその値を表示してくれるの?
最後の仕上げクイズ!
このコードを実行したとき、country はどうなるでしょうか?
JavaScript
const person = { name: "佐藤", country: "アメリカ" };
const { country = "日本" } = person;
console.log(country);
これが理解できれば、分割代入の「デフォルト値」の仕組みは完璧です!答えは何だと思いますか?
ここが一番混乱しやすいところですが、非常に重要なポイントです。
結論から言うと、console.log(country) で表示されているのは「ラベル名」ではなく、**「分割代入によって新しく作られた変数の中身」**です。
JavaScriptの分割代入が行われた瞬間、あなたの手元には**「ラベル名と同じ名前の変数」**が自動的に作成されているんです。
分割代入の「裏側」で起きていること
JavaScript
const person = { name: "佐藤", country: "アメリカ" };
// 分割代入の実行
const { country = "日本" } = person;
この一行を書いたとき、JavaScriptは裏側で以下のような処理をセットで行っています。
- 変数の宣言:
const country;という変数を新しく作る。 - 値のチェック:
person.countryがあるか見に行く。 - 代入:
person.countryは"アメリカ"なので、新しく作った変数countryに"アメリカ"を入れる。
だから、その後の console.log(country) は、**「変数 country の中身(アメリカ)」**を表示しているだけであって、オブジェクトのラベル(キー)を直接参照しているわけではないのです。
「ラベル名だけ」をログしても普通はエラーになる
もし分割代入をしていない状態で、ラベル名だけをログしようとするとどうなるでしょうか?
JavaScript
const person = { name: "佐藤", country: "アメリカ" };
console.log(country);
// エラー! "ReferenceError: country is not defined"
// (そんな名前の変数はどこにもないよ!と言われる)
つまり、console.log(country) がエラーにならずに "アメリカ" と表示されること自体が、**「分割代入によって country という名前の変数が無事に作られた証拠」**なのです。
最後のまとめ:3つの状態
今の状況を整理すると、プログラムの中には3つの「入れ物」があります。
| 名前 | 種類 | 中身 | 役割 |
person.name | プロパティ | "佐藤" | 元データ |
person.country | プロパティ | "アメリカ" | 元データ |
country | 変数 | "アメリカ" | 分割代入で作られた新しい入れ物 |
「オブジェクトの中にあるラベル(プロパティ)」と「外に飛び出してきた変数」は、名前が同じなだけで別物だと考えるとスッキリしませんか?
この「名前が同じ変数が勝手に作られる」という感覚、いかがでしょうか?納得できそうですか?
コメントを残す