ある意味で、 pushState() の呼び出しは window.location = "#foo" と似ていて、両方とも現在の文書に関連した別の履歴項目を作成し、有効化します。 しかし pushState() にはいくつかの利点があります。 新しい URL は現在の URL と同一オリジンにあるあらゆる URL にすることができます。それに対して、window.location に設定した場合、ハッシュのみを変更したのであれば同じ文書にとどまります。 URL を変更することは必須ではありません。それに対して、 window.location = "#foo"; を設定する場合は、現在のハッシュが #foo でない場合のみ新規の履歴項目を作成します。 履歴項目に任意のデータを関連づけることができます。ハッシュベースのアプローチでは、関連するデータすべてを短い文字列にエンコードする必要があり