为什么typeof被称为运算符而不是函数?

时间:2010-09-24 11:13:04

标签: javascript operators

在MDC中阅读本文(Special Operators)时,我遇到了一个问题,为什么typeof, new,等被称为运算符?

我有一个概念说+是一个运算符,因为它在2+3这两个实体上运算并给出另一个值。

当然,两个实体也会以同样的方式运作。

那有什么区别?

感谢您的回答。

2 个答案:

答案 0 :(得分:2)

不,作为一个运算符不是关于它是否有两个操作数 - 这是一元运算符和二进制运算符之间的区别(然后就是具有三个操作数的条件运算符,这是三元运算符的一个示例。例如,+也可以是一元运算符:

var x = +5;

你可以把运营商的东西称为“内置功能”。它们由JavaScript引擎本身所知,并且是语言的一部分,而不仅仅是功能。 (虽然运算符经常可以被库重载,具体取决于语言。我不知道JavaScript是否支持运算符重载。)

在某些情况下(JavaScript就是一个例子),语言和标准库之间有点模糊,但想想typeof作为操作数的内容:它是一个类型的名称。这不是你通常可以用作函数参数的东西;它需要语言的特殊支持。

答案 1 :(得分:0)

++也是一个只有一个参数的运算符。

其中一个区别是您没有使用参数调用运算符,即您编写typeof anew SomeObject(),而函数type_of将使用{{1}调用}。但就像Jon说的那样,你可以把它们看成是内置函数。正如type_of(a)中的旁注()是函数应用程序运算符,即它调用带有参数的函数。