When you wish to inhibit implied typecasts. For example:
3 == '3'
is true, whereas this is not:
3 === '3'
Douglas Crockford recommends always using strict comparison.
                  Delan Azabani
                   2010-05-22 06:25:01
                
              When you wish to inhibit implied typecasts. For example:
3 == '3'
is true, whereas this is not:
3 === '3'
Douglas Crockford recommends always using strict comparison.
It is strict type equality operator. It not only checks whether two are equal in value but also of the same type.
Consider a situation when you compare numbers or strings:
if (4 === 4) // same value and type
{
  // true
}
but
if (4 == "4") // same value and different type but == used
{
  // true
}
and
if (4 === "4") // same value but different type
{
  // false
}
This applies to objects as well as arrays.
So in above cases, you have to make sensible choice whether to use == or ===
It is good idea to use === when you are sure about the type as well
You use it to check if a variable's containing value and type is same as the compared one.