1
var items = new Array("one", "two", "three");
var itemsRef = items;
items.push("four");
console.debug(itemRef);
console.debug(items);

私は本当に上記の方法がわからず、参照後に「4」が追加されたアイテムitemsitemsRefも同じです。(「1」「2」「3」)だけにするのは合理的ではありませんか?itemsRefitemsitemsRef

itemsRef永遠に指さし続けるのならitems、なぜ私たちはそのような役に立たない議論を使うのitems = itemsRefですか?私はまだその考えを理解していません。誰かがこれがどのように機能するのか、そしてなぜJavaScriptが変数がお互いを永遠に指すようにするのか教えてもらえますか?

4

2 に答える 2

4

Javascriptは、値/コピーではなく参照によってオブジェクトと配列の割り当てを行います。そのため、その動作が見られます。それについてはたくさんのウェブドキュメントがあります。

ただし、配列をコピーすることが目標の場合は、次のようにします。

var newArray = oldArray.slice(0);
于 2012-05-04T01:09:43.073 に答える
1

この場合、itemsRefはアイテムを指しているのではなく、オブジェクト(配列)アイテム参照を指している。つまり、itemsとitemsRefは、互いにではなく同じオブジェクトを指します。

于 2012-05-04T01:10:17.237 に答える