typeof是一个运算符和一个函数

在JavaScript中, typeof是一个运算符和一个函数。 作为操作员还是function更好? 为什么?

typeof是一个操作符。 您可以使用以下方式轻松检查:

 typeof(typeof) 

如果是一个函数的types,这个expression式会返回'function'string,但是会导致一个语法错误:

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

所以typeof不能是一个函数。 可能括号记法typeof(foo)使你认为typeof是一个函数,但在语法上,这些括号不是函数调用 – 它们是用于分组的,就像(2 + 3) *2 。 事实上,你可以添加你想要的任意数量的:

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

我认为你根据清晰度select你想要的,作为一种习惯,我通常以如下方式将它用作操作符,因为它很清楚,至less是IMO:

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

这与这种格式是相反的:

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

对我而言,读取速度稍慢。 如果你typeof(thing)是一回事,所以不pipe漂浮你的船。 你可以得到一个完整的阅读和string期望从types在这里 。