JSプラグインで問題を修正しようとしていますが、デバッグ後に変数が変更されることがあります。だから私はこのコードを置いた:オブジェクトへの参照が2つありますが、1つで修正すると2番目の変数は変わらないオブジェクト
var a = $('#w3').data('fileinput').initialPreviewConfig[index];
var b = previewCache.data[id].config[index];
if (a === Object(a) && b === Object(b)) { //check a and b are objects
if(a == b && a === b) { //check they reference same object
a = null; //set a to null, so b should be null as well
if(a === null && b !== null) {
console.log("This should not be printed!"); //but it is not!
}
}
}
と出力はThis should not be printed
です。
両方の変数が同じオブジェクトを指している場合、1つの変数を変更しても別の変数が変更されないのはなぜですか?何が原因でこのようなイベントが発生する可能性がありますか?
編集: 私はコードを単純化しようとしていたが、このaとb時には出力This should not be printed
せず、時々ではありません。
if ($('#w3').data('fileinput').initialPreviewConfig[index] === Object($('#w3').data('fileinput').initialPreviewConfig[index]) && previewCache.data[id].config[index] === Object(previewCache.data[id].config[index])) {
if($('#w3').data('fileinput').initialPreviewConfig[index] == previewCache.data[id].config[index] && $('#w3').data('fileinput').initialPreviewConfig[index] === previewCache.data[id].config[index]) {
$('#w3').data('fileinput').initialPreviewConfig[index] = null;
if($('#w3').data('fileinput').initialPreviewConfig[index] === null && previewCache.data[id].config[index] !== null) {
console.log("This should not be printed!");
}
}
}
nullに設定すると、変更されないままBだけなので、これは変数がどのように動作するかで、nullにポイントを作る、メモリAが指した変更されません。 –
コードを簡略化しようとしているのですか、それとも*修正する*しようとしていますか? – Bergi
@Bergiプラグインを修正するためにデバッグコードを単純化しようとしていましたが、時には2つの変数が同時に変更されることもありますが、時には1つに変更されることもあります。 –