2010-09-24 5 views
0

En lisant cet article (Special Operators) dans MDC, j'ai une question comme pourquoi typeof, new, etc. sont appelés opérateurs?Pourquoi typeof est appelé opérateur au lieu de fonction?

J'ai une conception dire + est un opérateur parce qu'il opère sur deux entités comme 2+3 et donne une autre valeur.

Les fonctions Ofcourse fonctionnent aussi sur deux entités de la même manière.

Alors quelle est la différence?

Merci pour les réponses.

+0

@Yi Jiang modifié. pas plus en colère :-) – rajakvk

Répondre

2

Non, étant un opérateur est pas de savoir si oui ou non il a obtenu deux opérandes - c'est la différence entre un unaire opérateur et un opérateur binaire (et puis il y a l'opérateur conditionnel avec trois opérandes, qui est un exemple d'opérateur ternaire). Par exemple, + peut aussi être un opérateur unaire:

var x = +5; 

Vous pouvez trier des opérateurs de chose comme « fonctions intégrées ». Ils sont connus par le moteur JavaScript lui-même, et font partie de la langue plutôt que d'être simplement bibliothèque caractéristiques. (Bien que les opérateurs puissent souvent être surchargés par les bibliothèques, en fonction de la langue, je ne sais pas si JavaScript supporte la surcharge de l'opérateur.)

Dans certains cas (JavaScript étant un exemple), il y a un peu de flou entre le langage et la bibliothèque standard, mais pensez à ce que typeof prend comme un opérande: c'est le nom d'un type. Ce n'est pas quelque chose que vous pouvez utiliser normalement comme argument de fonction; il a besoin d'un soutien particulier dans la langue.

+2

L'opérande de 'typeof' dans JavaScript est n'importe quel objet ou primitive, pas spécifiquement le nom d'un type. Et non, JavaScript ne supporte pas la surcharge de l'opérateur. –

+0

Jon, faites-vous JavaScript? – think123

0

++ est également un opérateur avec un seul argument.

L'une des différences est que vous n'appelez pas un opérateur avec des paramètres, vous écrivez i.e. typeof a ou new SomeObject(), alors qu'une fonction type_of serait appelée avec type_of(a). Mais comme Jon l'a dit, vous pouvez les considérer comme des fonctions intégrées. En remarque, () dans myFunc(arg1, arg2) est un opérateur d'application de fonction, c'est-à-dire qu'il appelle une fonction avec les arguments donnés.

+0

() est un opérateur "appel de fonction". –

+0

si vous "appelez une fonction avec des arguments" ou "appliquez une fonction aux arguments" est juste une question de phrasé. mais bien sûr, étant donné la méthode 'function.call()' disponible en javascript, peut-être que votre formulation est préférée ... – einarmagnus

Questions connexes