## DEV Community is a community of 901,019 amazing developers

We're a place where coders share, stay up-to-date and grow their careers.

# JS == vs ===

This post expects prior knowledge on data types.

Javascript gives two options for testing equality that look really similar. Together we'll walk through the difference between `==` and `===`. ### Triple Equals / ===

Using Triple Equals tests for strict equality, meaning, both the type and the value have to be the same.

Here are some examples that return true:

```10 === 10 // true : both Integers and values match```

```true === true // true : both Booleans and values match```

```'hello world' === 'hello world' // true : both Strings and values match```

Here are some examples that return false:

```100 === '100' // false : comparison of an Integer and a String```

```'red' === 'blue' // false : both Strings with different values```

```false === 0 // false : both different types and different value```

What if we wanted to test loose equality where only the value mattered? Then we can use `==`

### Double Equals / ==

Using Double Equals tests for loose equality. Here only the value has to be the same. Javascript makes this possible by completing type coercion which will actually try to convert our values into a like type. Let's return to one of the previous examples that returned false.

```100 == '100' // true : comparison of an Integer and a String```

```false == 0 // true```

The example of `false == 0` can be confusing. This example returns `true` because 0 in Javascript is described as being falsy.

### In Conclusion

When testing equality using Triple Equals is preferred. Testing the type and value ensure true equality testing.

Both experience and this article provided information on the topic and describes in detail what falsy means.

## Discussion (7) Victoria Crawford • Edited on

You did a fantastic job at explaining the differences!!

My fiancé works with Python and has been dabbling in JS lately. I told him about this difference the other day and he was so amazed. Haha. It's always these small things that I think are fun to learn about! Kiara Contreras

Thanks so much Victoria!

It's been great to relearn about small things like this. I feel like I can positively contribute to someone else's learning by going over basic topics and it's been fun to finally start posting. Andrew (he/him)

`===` vs. `==` is how JavaScript implements equality vs. equivalence. Things that are equal are exactly the same, while things that are equivalent are more-or-less the same.

You could say that `4` and `2+2` are equal, while `"four"` and `4` are equivalent. The former is a mathematical equality while the latter is a linguistic equivalence.

In Java, for instance, you can use `==` to test for equality, which checks that the objects you're comparing are the exact same object, stored at the same address in memory. But `.equals()` checks for equivalence, checking that two objects' fields are equal, without caring that the two objects are in fact the exact same instance. David Wickes

Have you read about why there's a `===` in JavaScript? I think it's a lovely story...

Also, one of the cutest ways of pronouncing `===` I've ever heard: threequals 😂 Kiara Contreras

I haven’t! I’m always interested in tech history so I’ll definitely look into it.

Thanks! I appreciate you taking a read. I’ve just started writing posts and I’m having so much fun. Kiara Contreras

Thanks for the read! I also appreciate the typo mention :)