typeof is an operator and a function
In JavaScript typeof
is an operator and a function. Is it better used as an operator or a function? Why?
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;
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.
上一篇: 为什么instanceof会为某些文字返回false?
下一篇: typeof是一个运算符和一个函数