DEV Community


I Don't Know Javascript Coercion, Do You?

L.A. based web developer slowly parsing through Stack Overflow. If you like hot web dev tips or stories about being a freelancer, check out my newsletter:
・1 min read

I've made a grave mistake

In a video I published a few weeks ago, I made a rather basic mistake.

Given the following variables...

    let threeString = "3";
    let threeNum = 3;

What does this expression evaluate to?

    threeString + threeNum

If you're smarter than I was an hour ago, you'll know that it evaluates to "33".

Gordon Ramsay - Youre a string mate

Why does it do that?

According to ECMAScript, as summarized by Valentino:

If x is String or y is String then return ToString(x) followed by ToString(y)

In other words, if there is an expression with the + operator, and one of the values is a string, it will always coerce the values into a string.

Final Thoughts

I like to think I'm not completely dumb. I've been building websites/web apps in Javascript for about four years now. However, we all make mistakes. Even the most basic ones! Own up to them, and we'll all learn something. I know I did!

If you want to see my mistake in action, check out the video below!

And the follow up video, which I made before this mistake I made was pointed out...

Discussion (11)

aminnairi profile image

I like to think that intelligent people are really the people able to learn from their mistakes. Good catch on this one. Sharing our mistake is a way of teaching others. Especially for these kind of quirks in JavaScript!

codenutt profile image
Jared Author

Thank you! I agree.

karataev profile image
Eugene Karataev

Type coercion is definitely one of the most confusing parts in JS. It may contain many implicit steps with wtf results. For example

[] == ![] // true

And step by step explanation

codenutt profile image
Jared Author

I should have included === in my video. Oops lol. Thank you!

marcellothearcane profile image
codenutt profile image
Jared Author

That was hilarious! Thank you for sharing. I wasnt sure what it was before clicking though lol

hanpari profile image
Pavel Morava

Great video. Thank you

thepeoplesbourgeois profile image
Josh • Edited

It gets worse!

4 + "4"
// "44"

4 +"4"
// 8
codenutt profile image
Jared Author

Mother of god lol why??

pranjalagnihot8 profile image
Pranjal Agnihotri {..❤️}

Using "+" before a String converts it to Number in JavaScript

codenutt profile image
Jared Author