1. ホーム
  2. javascript

ここで、.slice(0)のポイントは何でしょうか?

2023-10-13 03:54:48

質問

jQueryのソースを勉強していたところ、こんなものを見つけました(v1.5 line 2295)。

namespace = new RegExp("(^|\\.)" +
  jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)");

質問ですが、なぜ slice(0) を使うのでしょうか?

どのように解決するのですか?

sort() は呼び出された配列を変更します。そして、他のコードが依存するかもしれないものを変異させまくるのはあまり良いことではありません。

slice() が返す配列は常に新しい配列を返します。 slice(0) が返す配列は入力と同じです。つまり、基本的には配列を複製するための安価な方法ということになります。