var url = location.pathname.split("/")
URLを部分的に分割するために使用しています。
結果の最初と最後の要素は常に空です。これがなぜなのか、誰か説明できますか?
ありがとうございました。
さて、次の url を考えてみましょうhttp://stackoverflow.com/questions/18762585/jquery-location-pathname-split-returning-empty-first-and-last-elements/
。パス名は/questions/18762585/jquery-location-pathname-split-returning-empty-first-and-last-elements/
、最初の「/」の前と最後の「/」の後に何もありません。
["", "questions", "18762585",
"jquery-location-pathname-split-returning-empty-first-and-last-elements",
"18762683", ""]
string が分割区切り文字で始まる場合、 の前に何もないため、最初の要素は空/
です。文字列の最後と同じこと/
- 後に何もない場合、結果配列に空の要素が与えられます。
例:
'/foo/bar/'.split('/') // ["", "foo", "bar", ""]
'foo/bar/'.split('/') // ["foo", "bar", ""]
'foo/bar'.split('/') // ["foo", "bar"]
location.pathname は、URL のパス名部分を返します。つまり、ホストとクエリ文字列を含まないパスを返します。
つまり、「http://www.stackoverflow.com/question/1/50/hello?answers=yes」のパス名は「/question/1/50/hello」です。
したがって、パス名が「/a/b/c/」である「 http://site.com/a/b/c/ 」のような URL について質問することになるでしょう。それを「/」で分割すると、「/」で区切られた文字列が返されます。最初と最後のトークンの前には何もないため、最初と最後のトークンには空の文字列が返されます。
パスが / で始まり、この前に空の文字列があるためです。パスも / で終わる場合、後ろに別の空の文字列もあります。
これは、単純な JavaScript の動作である jQuery とは何の関係もありません。削除したい場合は、location.pathname の先頭/末尾にある「/」文字を削除するか、配列内の空の文字列を無視することができます。
これは、テストでパス名が出力された場合に明確になる場合があります。通常は「/」で始まります。そして、最後の '/' の後に何もなければ、そのような結果が得られます。