質問: $.deferred();、最初の処理を終了したことを伝えるときは、return a.promise();です。 $.deferred()を返すと、返した先で勝手に状態遷移させられるのを防ぐため、promiseという$.deferredから一部のメソッドを抜いたオブジェクトを返すそうですが、 この「返した先で勝手に状態遷移させられるのを防ぐため」がいまいち、何をいっているのか分かりません。初期状態であるunresolvedから、状態を変更するさいは、a.resolve()かa.reject()と記述する必要がありますが、 returnすると知らない間に、再び状態が変更してしまうということでしょうか。 それと、$.deferredの「$.」は、変数名で利用できる単なる識別子(ドットを除くと、jquery()オブジェクトの略称)だと認識しておるのですが、何故ドルドットなのでしょうか。phpなどで変数を利用するときも、$を使いますが関係はありますか。
回答: > > 返した先で勝手に状態遷移させられるのを防ぐため > > > aaaaaaaaさん自身がお書きのように、jQuery Promiseは`.resolve()`や`.reject()`で状態を変更できますが、`.promise()`で返したオブジェクトにはこれらのメソッドが**ない状態となります**。ということで、「受け取った側が勝手に`.resolve()`や`.reject()`を実行して状態が矛盾してしまう」ことを避けられるようになります。 > > $.deferredの「$.」 > > > jQueryオブジェクトは`jQuery`という名前で存在していますが、いちいち書くのが面倒ということもあって、1文字で書ける`$`も用意しています。`$.deferred`は、`jQuery.deferred`の略記です。