質問: php等で配列にるループで値を格納したい場合には以下のようなコードで対応しております。 ``` $hoge=[]; for($i;$i script ``` 1) Javascriptとphpではスコープの考え方が異なるのでしょうか?要領としては、globalで配列型で変数を宣言、localで配列に複数の値をpush、改めてグローバルで配列の内容をpushという点で変わらないと思うのですが、javascriptとphpのスコープの違い等で検索しても具体的なものを探すことができなかったため、アドバイスを頂けますでしょうか? 2) 上記のJavascriptのコードでphpと同様にglobalでもその配列型変数を利用するすべはあるのでしょうか? 初歩的な内容であれば誠に申し訳ございませんが 宜しくお願い申し上げます。 修正コードの加筆 ``` script ```
回答: 2点。 1点目。 var とつけると定義を意味するのでその時点でのスコープとなります。 提示のコードではグローバルスコープで定義したものの、success内にまたvarで定義されています。 success内で定義されたのでそのcontent という変数のスコープはsuccess内のみです。 他でもそのcontent という変数を使いたい(グローバルとしたい)のであればsuccess内の変数にvarは不要でしょう。 2点目。 ajaxのasyncが何も指定されていないので非同期処理ですね。 非同期処理ということはそのajaxの処理が終わっているかどうかに関わらずその後の処理は実行されていっています。 つまり、例えsuccess内でのvarを除いてグローバルとなっているcontentという変数にeachでもなんでも値を設定していっているとしても、一番最後のconsole.log()時点ではajaxのsuccess内の処理を待つことなく実行されている可能性が高いです。