Parenthesis in JavaScript
A dialog
For JavaScript beginners (I envy all of you because your brains are not damaged by this yet), ()
can be a huge confusion.
Example 1
const createPerson = name => {firstname: name};
console.log(createPerson("Guowei"));
Of course it logs undefined
. Let’s ask JavaScript what was it thinking when it executed the code.
Me: Hi, JavaScript.
JavaScript: Hi!
Me: What the heck has happened? Where is my returned object?
JavaScript: Wait. What return? What object? I do not see any
return
!Me: … Alright, I did not write
return
explicitly, but isn’t{firstname: name}
an object? You should just return that I think.JavaScript: There is no object that I see. I thought the
{}
means the mark of the function body!Me: OK, there seems to be some misunderstanding. But if you think again, it makes more sense to treat it as an object, it has
firstname: name
, what do you think of that?JavaScript: Oh, isn’t it just a label? Like what people normally do with looping. They have
loop1:
andloop2:
to mark where to break.Me: ………………
(after 5 minutes)
Me: I do not want to continue this conversation, you make no sense.
JavaScript: Well, fine. See you then.
P.S. The fix would be to wrap ()
around the returning object like ({firstname: name})
.
Example 2
If you have done any ReactJs work, you see the following pattern a lot:
return (
<NameCard>
<FirstName />
<LastName />
</NameCard>
);
People will normally tell you that when returning multiple lines, just wrap them in ()
. But why? Let’s ask JavaScript again.
Me: Hi JavaScript, sorry I was rude last time, but I have a new question.
JavaScript: Shoot.
Me: Why you cannot return multiple lines of code?
JavaScript: Ah! You programmers tend to forget things a lot. E.g. you forget to put
;
after return, so I just put it there for you, you are welcome.Me: …..O……K…., where did you put it by the way?
JavaScript: Here
<NameCard>;
.Me: Oh yeah, cool. SAYONARA.(I hope I will never talk to you again)
JavaScript: Farewell.
Share this post
Twitter
Google+
Facebook
Reddit
LinkedIn
StumbleUpon
Email