typeof is an operator and a function

Javascript

Javascript Problem Overview


In JavaScript typeof is an operator and a function. Is it better used as an operator or a function? Why?

Javascript Solutions


Solution 1 - Javascript

typeof is an operator. You can easily check it using:

typeof(typeof)

Were typeof a function, this expression would return 'function' string, but it results in a syntax error:

js> typeof(typeof);
typein:8: SyntaxError: syntax error:
typein:8: typeof(typeof);
typein:8: .............^

so, typeof cannot be a function. Probably parenthesis-notation typeof(foo) made you think typeof is a function, but syntactically, those parenthesis are not function call - they are those used for grouping, just like (2 + 3) *2. In fact, you can add any number of them you want:

typeof(((((foo))))); // is equal to typeof foo;

Solution 2 - Javascript

I think you pick which you want based on clarity, as a habit I usually use it as an operator in the following way because it's pretty clear, at least IMO:

if(typeof thing === "string") { 
  alert("this is a string");
}

if(typeof thing === "function") {
  alert("this is a function");
}

This is opposed to this format:

if(typeof(thing) === "string") { 
  alert("this is a string");
}

Which to me, makes it slightly slower to read. If you do typeof(thing) it's the same thing, so whatever floats your boat. You can get a full read and what strings to expect from types here.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionhekevintranView Question on Stackoverflow
Solution 1 - Javascriptel.pescado - нет войнеView Answer on Stackoverflow
Solution 2 - JavascriptNick CraverView Answer on Stackoverflow