This page discusses Equality between 2 Javascript values. Because every value in javascript is an object, it applies also to the object.
Object.is verifies the value.
This is the function used by libraries to check if 2 values received are the same. (React uses it intensively)
Syntax:
Object.is(value1, value2);
let foo = { a: 1 };
let bar = foo;
console.log(Object.is(foo, foo)); // true
console.log(Object.is(foo, bar)); // true
console.log(Object.is(foo, { a: 1 })); // false
Object.is(null, null); // true
Object.is(undefined, undefined); // true
Object.is(window, window); // true
For a comparison:
For objects, they will not compare the content (ie not anything about the underlying values).
function Employee(name) {
this.name = name;
this.dept = 'general';
this.valueOf = function(){
return this.name;
};
}
let employee1 = new Employee('foo');
let employee2 = new Employee('foo');
console.log("The variable employee1 has the type "+(typeof employee1 ));
console.log("The variable employee1 has the valueOf "+employee1.valueOf());
console.log("They are not equal "+(employee1 == employee2));
console.log("But their value is "+(employee1.valueOf() == employee2.valueOf()));
var a = [1,2,3];
var b = [1,2,3];
console.log("The array a has the type "+(typeof a));
console.log("The array a in a string format is "+a.toString()+ "( valueOf() )" );
var c = "1,2,3";
console.log("The variable c has the type "+(typeof c));
console.log("\nEquality");
console.log( a == c ); // true - same value as string
console.log( b == c ); // true - same value as string
console.log( a == b ); // false (not the same reference)