En JavaScript typeof
est un opérateur et une fonction. Est-il préférable de l'utiliser comme opérateur ou comme fonction ? Pourquoi ?
Réponses
Trop de publicités?typeof
est un opérateur. Vous pouvez facilement le vérifier en utilisant... typeof
opérateur :
typeof typeof
Étaient typeof
une fonction, cette expression renverrait 'function'
mais il en résulte une erreur de syntaxe :
js> typeof typeof;
typein:8: SyntaxError: syntax error:
typein:8: typeof typeof;
typein:8: .............^
donc, typeof
ne peut pas être une fonction. Probablement une parenthèse-notation typeof(foo)
vous a fait réfléchir typeof
est une fonction, mais syntaxiquement, ces parenthèses ne sont pas appel de fonction - ils sont ceux utilisés pour le regroupement, tout comme (2 + 3) *2
. En fait, vous pouvez en ajouter autant que vous le souhaitez :
typeof(((((foo))))); // is equal to typeof foo;
Je pense que vous choisissez ce que vous voulez en fonction de la clarté, par habitude je l'utilise comme opérateur de la manière suivante parce que c'est assez clair, du moins IMO :
if(typeof thing === "string") {
alert("this is a string");
}
if(typeof thing === "function") {
alert("this is a function");
}
Cela s'oppose à ce format :
if(typeof(thing) === "string") {
alert("this is a string");
}
Ce qui, pour moi, le rend légèrement plus lent à lire. Si vous faites typeof(thing)
c'est la même chose, donc peu importe ce qui fait flotter votre bateau. Vous pouvez lire l'intégralité de ces informations et savoir quelles sont les chaînes de caractères à attendre ici. .
En termes d'ECMAScript 5.1 et comme les autres l'ont déjà dit, il s'agit d'un opérateur http://www.ecma-international.org/ecma-262/5.1/#sec-11.4.3 et oui, je suis un peu en retard, mais peut-être que ça aidera quelqu'un.