読者さん、
JavaScriptの面接コーディングの質問について解説していきます。 JavaScript コンパイラの仕組みと、実際に出力として生成されるもの。
出力の各部分を分解し、なぜこのように表示されるのかを説明し、それを責任のあるコードの特定の行に戻します
let a = {}; let b = { key: 'b' }; let c = { key: 'c' }; a[b] = 123; a[c] = 456; console.log(a[b])
詳細に入る前に、このコード スニペットを見てみましょう。現在の理解に基づいて出力がどのようになるかを推測してください。このアプローチは、JavaScript のスキルを強化するだけでなく、その後の説明をより有意義なものにします
「JavaScript が各行をどのように処理するかを考えてください。推測ができたら、読み続けて、それが正しいかどうかを確認してください。」
let a = {};
上記のコードでは、空のオブジェクトを作成し、変数 'a' に代入します。
let b = { key: 'b' };
この行は、単一のプロパティ キーと値 'b' を持つオブジェクトを作成し、それを変数 'b' に割り当てます。
let c = { key: 'c' };
この行は、単一のプロパティ キーと値 'c' を持つオブジェクトを作成し、それを変数 'c' に割り当てます。
a[b] = 123;
a[b] = 123 この行は、オブジェクト b をキーとして使用して、オブジェクト a のプロパティを設定します。 JavaScript では、オブジェクトが別のオブジェクトのキーとして使用される場合、そのオブジェクトはまず toString() メソッドを使用して文字列に変換されます。この場合、オブジェクト b の文字列表現は "[object Object]" です。したがって、オブジェクト a のプロパティ "[object Object]" は、値 123 に設定されます。
a[c] = 456;
前のステップと同様に、"c" もオブジェクトであり、文字列に変換されると、""[object Object]"".
になります。したがって、行 a[c] = 456; は "a[object Object]"=456 と同等であり、オブジェクトには "[object] があることを意味します。 Object]" プロパティとその値は 456.
console.log(a[b])
出力は 456 です。プロパティ "a[b]" にアクセスしようとすると、JavaScript は b を文字列 ("[object Object]") に再度変換します。 object にはキー "[object Object]" のプロパティがあり、その値は 456 です。したがって、出力が印刷されます。
要約すると、このコードは、オブジェクトが別のオブジェクトのキーとして使用される場合、そのオブジェクトが最初に文字列表現 (デフォルトでは「[object Object]」) に変換されることを示しています。これは、オブジェクト b と c が同じキーとして扱われ、そのキーに割り当てられた最後の値が取得される値であることを意味します。
この説明でコードが明確になっただけでなく、さらに詳しく調べたいという好奇心が湧いてくれれば幸いです。 JavaScript には驚きと強力なツールがたくさんあり、学習するたびに習得に近づきます。
読んでいただきありがとうございます。この内訳を楽しんでいただければ幸いです。コメントでご意見、ご質問、将来のトピックに関するアイデアをお気軽に共有してください。
コーディングを楽しんでください!
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3