Mots clés réservés en JavaScript
Quels mots-clés JavaScript (noms de fonctions, variables, etc.) sont réservés?
8 réponses
Nous devrions être un lien vers les sources d'information réelles, plutôt que juste le Top Google hit.
Http://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Reserved_Words
JScript 8.0: http://msdn.microsoft.com/en-us/library/ttyab5c8.aspx
Voici mon poème, qui comprend tous les mots réservés en JavaScript, et est dédié à ceux qui restent honnêtes dans l'instant, et pas seulement essayer de marquer:
Let this long package float,
Goto private class if short.
While protected with debugger case,
Continue volatile interface.
Instanceof super synchronized throw,
Extends final export throws.
Try import double enum?
- False, boolean, abstract function,
Implements typeof transient break!
Void static, default do,
Switch int native new.
Else, delete null public var
In return for const, true, char
…Finally catch byte.
Pour compléter la réponse de benc , Voir la norme ECMA-262. Ce sont les mots réservés officiels, mais seul un pédant ignore la mise en œuvre pour respecter la norme. Pour les mots réservés des implémentations les plus populaires, c'est-à-dire firefox et internet explorer, voir la réponse de benc.
Les mots réservés dans EMCAScript-262 sont les Clés, Futurs Mot Réservés, NullLiteral, et BooleanLiteral, où l' Les mots-clés sont
break do instanceof typeof
case else new var
catch finally return void
continue for switch while
debugger function this with
default if throw
delete in try
Les futurs mots réservés sont
abstract export interface static
boolean extends long super
byte final native synchronized
char float package throws
class goto private transient
const implements protected volatile
double import public
enum int short
Le NullLiteral est
null
Et le BooleanLiteralsont
true
false
Je lisais à ce sujet dans JavaScript & jQuery: Le manuel manquant:
Tous ces mots réservés ne causeront pas de problèmes dans tous les navigateurs, mais il est préférable d'éviter ces noms lors de la désignation des variables.
Mots-clés JavaScript:
break, case, catch, continue, debugger, default, delete, do, else, false, finally, for, function, if, in, instanceof, new, null, return, switch, this, throw, true, try, typeof, var, void, while, with
.Réservé pour une utilisation future:
abstract, boolean, byte, char, class, const, double, enum, export, extends, final, float, goto, implements, import, int, interface, let, long, native, package, private, protected, public, short, static, super, synchronized, throws, transient, volatile, yield
.Variables globales prédéfinies dans le navigateur:
alert, blur, closed, document, focus, frames, history, innerHeight, innerWidth, length, location, navigator, open, outerHeight, outerWidth, parent, screen, screenX, screenY, statusbar, window
.
Voici un navigateur et une version de langue agnostique pour déterminer si une chaîne particulière est traitée comme un mot-clé par le moteur JavaScript. Crédits à cette réponse qui fournit le noyau de la solution.
function isReservedKeyword(wordToCheck) {
var reservedWord = false;
if (/^[a-z]+$/.test(wordToCheck)) {
try {
eval('var ' + wordToCheck + ' = 1');
} catch (error) {
reservedWord = true;
}
}
return reservedWord;
}
Aucune des réponses actuelles n'avertit que quel que soit le dialecte ES, les navigateurs ont tendance à avoir leurs propres listes de mots-clés réservés, De méthodes, etc. en plus de ce que dicte ES.
Par exemple, IE9 interdit l'utilisation de noms logiques tels que: addFilter
, removeFilter
(Ils, entre autres, sont des méthodes réservées).
Voir http://www.jabcreations.com/blog/internet-explorer-9 pour une liste plus étendue 'actuellement connue' spécifique à IE9. J'ai encore trouvé une référence officielle à eux sur msdn (ou ailleurs).
La réponse de Benc est excellente, mais pour mes deux cents, j'aime la page de w3schools sur ceci:
Http://www.w3schools.com/js/js_reserved.asp
En plus de lister les mots-clés réservés par la norme, il a aussi une longue liste de mots-clés que devrait éviter dans certains contextes; par exemple, ne pas utiliser le nom alert
lors de l'écriture du code à exécuter dans un navigateur. Cela m'a aidé à comprendre pourquoi certains mots étaient mis en évidence comme mots clés dans mon éditeur même si je savais ils n'étaient pas des mots-clés.