Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

typeof is an operator and a function

Tags:

javascript

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

like image 625
hekevintran Avatar asked May 09 '10 11:05

hekevintran


People also ask

Is typeof a operator or function?

It's an operator, not a function.

Is typeof a function?

The TypeOf function is an important tool when dealing with complex code. It allows a programmer to quickly check a variable's data type—or whether it's “undefined” or “null”—without going through the code line by line! Additionally, the TypeOf function can also check whether an operand is an object or not.

Is typeof operator or function JavaScript?

In JavaScript, the typeof operator returns the data type of its operand in the form of a string. The operand can be any object, function, or variable.

What is a typeof operator?

Typeof in JavaScript is an operator used for type checking and returns the data type of the operand passed to it. The operand can be any variable, function, or object whose type you want to find out using the typeof operator.


2 Answers

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;
like image 125
el.pescado - нет войне Avatar answered Oct 18 '22 20:10

el.pescado - нет войне


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.

like image 38
Nick Craver Avatar answered Oct 18 '22 19:10

Nick Craver