- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:JavaScriptオブジェクトリテラル同士の代入)
JavaScriptオブジェクトリテラル同士の代入
このQ&Aのポイント
- JavaScriptのオブジェクトリテラル同士の代入について質問があります。具体的には、{p:r, q:s} = {p:"foo", q:"bar"}の構文についての説明を求めています。
- また、代入後の変数rとsがグローバル変数として定義される理由や、varを付けないと構文エラーになる理由、および代入したオブジェクトのプロパティにアクセスできない理由についても知りたいです。
- さらに、この構文による代入はshallow copyなのかdeep copyなのかも教えてください。そして、もし左辺のvalueをグローバル変数として定義する意味がある場合、var obj2={a:"dummy"}; var {p:obj2.a}={p:"a"};のようなコードが文法エラーになる理由も知りたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Firefox の独自機能「分割代入」のようですね。 https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Grammar_and_types https://developer.mozilla.org/ja/docs/Web/JavaScript/New_in_JavaScript/1.7#.E5.88.86.E5.89.B2.E4.BB.A3.E5.85.A5 MDNの JavaScript から [Mozilla における ECMAScript 6 のサポート] -> [合意や安定性が確立していない機能] と辿っていけば見つかります。 https://developer.mozilla.org/ja/docs/Web/JavaScript # Re: shining330さん
その他の回答 (1)
- think49
- ベストアンサー率59% (285/482)
回答No.1
var {p:r, q:s} = {p:"foo", q:"bar"}; を Google Chrome で実行すると SyntaxError になりますが、質問文にある「次のような構文」は有効なコードであることを確認されたものなのでしょうか。 また、そのコードを見かけたサイトのURLはどこでしょう? # Re: shining330さん
補足
動作環境はfirefoxです。エラーメッセージの有無や有効性はfirebugにて確認しました。また、オフラインでhtmlファイルを作成し以下のように確認できます。 ~略~ <script> var {p:r, q:s} = {p:"foo", q:"bar"}; alert(r);// foo </script> コードは業務で使っている物ですが、担当者がいないため質問させていただきました。