Difference between equal and strictly equal in javascript

The strict equality operator (===) checks whether its two operands are equal, returning a Boolean result. Unlike the equality operator, the strict equality operator always considers operands of different types to be different.

Try it

Syntax

Description

The strict equality operators (=== and !==) provide the IsStrictlyEqual semantic.

  • If the operands are of different types, return false.
  • If both operands are objects, return true only if they refer to the same object.
  • If both operands are null or both operands are undefined, return true.
  • If either operand is NaN, return false.
  • Otherwise, compare the two operand's values:
    • Numbers must have the same numeric values. +0 and -0 are considered to be the same value.
    • Strings must have the same characters in the same order.
    • Booleans must be both true or both false.

The most notable difference between this operator and the equality (==) operator is that if the operands are of different types, the == operator attempts to convert them to the same type before comparing.

Examples

Comparing operands of the same type

console.log("hello" === "hello");   // true
console.log("hello" === "hola");    // false

console.log(3 === 3);               // true
console.log(3 === 4);               // false

console.log(true === true);         // true
console.log(true === false);        // false

console.log(null === null);         // true

Comparing operands of different types

console.log("3" === 3);           // false

console.log(true === 1);          // false

console.log(null === undefined);  // false

Comparing objects

const object1 = {
  name: "hello"
}

const object2 = {
  name: "hello"
}

console.log(object1 === object2);  // false
console.log(object1 === object1);  // true

Specifications

Specification
ECMAScript Language Specification
# sec-equality-operators

Browser compatibility

BCD tables only load in the browser

See also

What is = in JavaScript?

Equal to (=) is an assignment operator, which sets the variable on the left of the = to the value of the expression that is on its right. This operator assigns lvalue to rvalue.

For example, Writing a=10 is fine. If we write 10=10, ‘a’ = 10 or ‘a’ = ‘a’, it will result in a reference error.

In this tutorial, you will learn:

  • What is = in JavaScript?
  • What is == in JavaScript?
  • What is === in JavaScript?
  • Why use = in JavaScript?
  • Why use == in JavaScript?
  • How === Works Exactly?
  • Example of =
  • Example of ==
  • Example of ===
  • = Vs == VS === in JavaScript

What is == in JavaScript?

Double equals (==) is a comparison operator, which transforms the operands having the same type before comparison.

So, when you compare string with a number, JavaScript converts any string to a number. An empty string is always converts to zero. A string with no numeric value is converts to NaN (Not a Number), which returns false.

What is === in JavaScript?

=== (Triple equals) is a strict equality comparison operator in JavaScript, which returns false for the values which are not of a similar type. This operator performs type casting for equality. If we compare 2 with “2” using ===, then it will return a false value.

Why use = in JavaScript?

Here are the important uses of = in JavaScript:

= JavaScript operator assigns a value to the left operand depends on the value of operand available on the right side. The first operand should be a variable.

The basic assignment operator is =, that assigns the value of one operand to another. That is, a = b assigns the value of b to a.

Why use == in JavaScript?

Here are the important uses of == in JavaScript:

The == operator is an equality operator. It checks whether its two operands are the same or not by changing expression from one data type to others. You can use == operator in order to compare the identity of two operands even though, they are not of a similar type.

How === Works Exactly?

  • Strict equality === checks that two values are the same or not.
  • Value are not implicitly converted to some other value before comparison.
  • If the variable values are of different types, then the values are considered as unequal.
  • If the variable are of the same type, are not numeric, and have the same value, they are considered as equal.
  • Lastly, If both variable values are numbers, they are considered equal if both are not NaN (Not a Number) and are the same value.

Example of =

In the below program, there are two variables “a” and “b”. We are adding and printing their values using a third variable, “c”. The sum of the value of variable “a” and “b” is 7. Therefore, the output is 7.





JavaScript Operators

a = 2, b = 5, calculate c = a + b, and display c:

Output:

a = 2, b = 5, calculate c = a + b, and display c:

7

Example of ==

In the below program, we have declared one variable “a” having value 10. Lastly, the statement a == 20 returns false as the value of a is 10.





Output:

false

Example of ===

In the below program, the value of variable x is 10. It is compared to 10 written in double-quotes, which is considered as a string, and therefore, the values are not strictly the same. The output of the program is false.





Output:

false

= Vs == VS === in JavaScript

Here are the important differences between =, ==, and ===

======
= in JavaScript is used for assigning values to a variable. == in JavaScript is used for comparing two variables, but it ignores the datatype of variable. === is used for comparing two variables, but this operator also checks datatype and compares two values.
It is called as assignment operator It is called as comparison operator It is also called as comparison operator
The assignment operator can evaluate to the assigned value Checks the equality of two operands without considering their type. Compares equality of two operands with their types.
It does not return true or false Return true if the two operands are equal. It will return false if the two operands are not equal. It returns true only if both values and data types are the same for the two variables.
= simply assign one value of variable to another one. == make type correction based upon values of variables. === takes type of variable in consideration.
== will not compare the value of variables at all. The == checks for equality only after doing necessary conversations. If two variable values are not similar, then === will not perform any conversion.

KEY DIFFERENCES:

  • = is used for assigning values to a variable, == is used for comparing two variables, but it ignores the datatype of variable whereas === is used for comparing two variables, but this operator also checks datatype and compares two values.
  • = is called as assignment operator, == is called as comparison operator whereas It is also called as comparison operator.
  • = does not return true or false, == Return true only if the two operands are equal while === returns true only if both values and data types are the same for the two variables.

What is the difference between == === JavaScript?

The main difference between the == and === operator in javascript is that the == operator does the type conversion of the operands before comparison, whereas the === operator compares the values as well as the data types of the operands.

Should I use == or === JavaScript?

== in JavaScript is used for comparing two variables, but it ignores the datatype of variable. === is used for comparing two variables, but this operator also checks datatype and compares two values. Checks the equality of two operands without considering their type. Compares equality of two operands with their types.

What does strictly equal mean?

The strict equality operator ( === ) checks whether its two operands are equal, returning a Boolean result.

What is the difference between double equal to and triple equal to in JavaScript?

Double Equals ( == ) checks for value equality only. It inherently does type coercion. This means that before checking the values, it converts the types of the variables to match each other. On the other hand, Triple Equals ( === ) does not perform type coercion.