Click here to Skip to main content
15,886,606 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Good afternoon JavaScript types. I have a simple query perhaps you could explain to my thick brain.

console.log(typeof(100));
outputs 'number'. Well of course it does.

console.log(typeof(100).toString());
outputs 'string'. Now I'm confused, but if I do this:

console.log((typeof(100)).toString());
I get back to 'number' again. These last two things are identical according to my C# eyes, so there's clearly something probably quite simple I'm missing here. Why does the second example print out 'string'?

What I have tried:

I object to being forced into telling what I've tried.
Posted
Updated 2-Apr-20 2:49am

Right, answered my own question. The second one is the equivalent of

console.log(typeof ((100).toString()))

Because in JavaScript the brackets appear optional when using typeof. I think I need a bucket to be sick in.
 
Share this answer
 
Comments
Richard Deeming 2-Apr-20 8:46am    
Yes - typeof is an operator, not a function. :)
typeof - JavaScript | MDN[^]
Rob Philpott 2-Apr-20 8:54am    
Perhaps it's just a rite or passage for those arriving at JavaScript from proper languages, but its really making me feel quite ill.
Richard Deeming 2-Apr-20 8:56am    
Wait until you start trying to work out what this points to. :)

this - JavaScript | MDN[^]
OriginalGriff 2-Apr-20 9:06am    
Welcome to Hell - I'd run for the doors now if I was you ...
I understand it is confusing; the easy explanation is that is an order of operations, and the type-conversion is done before the type-evaluation.

I spaced it out to show you how this is being evaluated in your last 2 lines of codes
C#
console.log( typeof         (100).toString()  );
console.log( (typeof(100))  .toString()       );
 
Share this answer
 
typeof is not a function, it's an operator.

try :
typeof 100
typeof 100.toString() // error
typeof (100).toString()
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900