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.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Syntax
x === y
Description
The strict equality operators (=== and !==) use the Strict Equality Comparison Algorithm to compare two operands.
- If the operands are of different types, return
false. - If both operands are objects, return
trueonly if they refer to the same object. - If both operands are
nullor both operands areundefined, returntrue. - If either operand is
NaN, returnfalse. - Otherwise, compare the two operand's values:
- Numbers must have the same numeric values.
+0and-0are considered to be the same value. - Strings must have the same characters in the same order.
- Booleans must be both
trueor bothfalse.
- Numbers must have the same numeric values.
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 (ECMA-262) The definition of 'Equality operators' in that specification. |
Browser compatibility
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
| Desktop | Mobile | Server | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Strict equality (a === b) | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | IE Full support 4 | Opera Full support 4 | Safari Full support 1 | WebView Android Full support 1 | Chrome Android Full support 18 | Firefox Android Full support 4 | Opera Android Full support 10.1 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 | nodejs Full support 0.1.100 |
Legend
- Full support
- Full support
