以前、あることを考えていました。関数がすでに配列に入れられているかどうかを確認したかったのです。その場合は、例外をスローします。コンソールでこの小さなテストを行いました...
つまり、オブジェクトは常に単なる参照であり、a
asx
を設定した後、変更x
しa
て影響を受ける可能性があると言えるでしょうか?
x = a
これは、私が望んでいることは何であっても条件を意味するのでしょうか。
これを使用して、関数/オブジェクトが既に配列にあるかどうかを確認するだけで、これを正しく行うことができます...
これを行うより良い方法はありますか?
これは、変数を関数に渡してその関数で変更すると、その関数の外でも変更されることを意味しますか?
編集
私は、この小さなテストで突然変異について正しいと思います。しかし、2番目の例の最初のログにある理由がわかりません
編集終了
例 1:
var x = function(){console.log("hello")}; var a = function(){console.log("hello")};
console.log(x == a); //comes out false
//Set a as x
a = x;
console.log(x == a); //comes out true
例 2:
Array.prototype.Contains = Array.prototype.Contains || function (obj) {
return this.indexOf(obj) != -1;
};
var x = function(){console.log("hello")}; var a = function(){console.log("hello")};
var z = a;
console.log(x == a); //comes out false
var l = [];
l.push(x);
//Set a as x
a = x;
l.push(a);
console.log(x == a); //comes out true
console.log(l.Contains(x)); //Should come out true
console.log(l.Contains(a)); //Should come out true
console.log(l.Contains(z)); //Should come out false