JavaScript オブジェクトの比較
比較記号:==,!=,===,!==,>=,<=,>,< ;
== 常に真直度を比較し、タイプが異なる場合は常に変換を試みます。
=== 同一性を比較、変換なしで比較
== 基本型 (文字列、数値、ブール値) の場合、それらの値を比較、
var a = "123";
var b = 123;
(a==b) = true;
(a===b) = false;
オブジェクトの場合は配列、関数の型、それらの参照を比較します。これは、それらの参照が等しい場合にのみ当てはまります。
function Point(x,y){
this.x = x;
this.y = y ;
};
Point.prototype.toString = function(){
alert("in toString");
return "x=" this.x " y=" this.y;
};
Point.prototype.valueOf = function(){
alert("in valueOf");
return this.x this.y;
};
var pa = new Point(1,1);
var pb = new Point(1,1);
var pc = pa;
の場合: pa!=pb ;
pa!==pb;
pa==pc;
pa===pc;
var arr1 = [1,2,3];
var arr2 = [1,2,3];
arr1!=arr2, arr1!==arr2
0、false、null、未定義と言わなければなりません
var t1 = 0;
var t2 = false;
var t3 = null;
var t4;
の場合: t1==t2;t1!==t2;
t1!=t3;
t1!==t4;
t2!==t3;
t2!==t4;
t3!==t4;
オブジェクトが基本型と比較される場合は、最初にオブジェクトの valueOf を呼び出し、次にオブジェクトの toString を呼び出して基本型と比較します。
ブール型と比較される場合は、最初に true に変換しますfalse は 1 に変換され、比較されます。
var pa = new Point(1,1);
alert(pa==2); は "in valueOf" を出力し、次に "true" を出力します。
Point.prototype がブロックされている場合 。 valueOf は "in toString" を出力し、次に "false" を出力します。
var pa = new Point(1,0);
then pa==true;
関係演算子>= ,<= ,>,<
両辺が数値であるか、数値に変換できる場合、数値が比較されます。
両側が文字列であるか、文字列に変換できる場合は、文字列を比較します。
一方が文字列に変換でき、もう一方が数値に変換できる場合は、文字列を数値に変換して比較してください。文字列を数値に変換できない場合は、NaN となり、false が返されます。 🎜>比較に参加するオブジェクトがある場合、常にオブジェクトを数値または文字列に変換して比較しようとします。
これは興味深い例です: function Point(x,y){
this.x = x;
this.y = y;
}; 🎜>
Point.prototype.toString = function(){alert("in toString"); return "x=" this.x " y=" this.y;
};
Point.prototype.valueOf = function(){alert("in valueOf"); return this.x this.y;
};
var pa = new Point(1,1);
var pb = new Point(1,1);
then
(pa==pb)==false;(pa> pb)==false;(pa
ただし:
(pa>=pb) == true;(pa<=pb) ) == true;