Mots clés réservés en JavaScript

Réponses:

1476

Voici mon poème, qui comprend tous les mots-clés réservés en JavaScript, et est dédié à ceux qui restent honnêtes sur le moment, et pas seulement essaient 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.
art4theSould
la source
5
screenshots.firefox.com/MVw02wDrHPi197kK/stackoverflow.com ça me donne pas envie de cliquer dessus
Kuba Orlik
61

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, à savoir Firefox et Internet Explorer, voir la réponse de benc.

Les mots réservés dans EMCAScript-262 sont les mots - clés , les futurs mots réservés , NullLiteral et BooleanLiteral , où 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 les BooleanLiteral s sont

true
false
Joseph Holsten
la source
Joseph, merci d'avoir ajouté cette information. J'ai trouvé ce PDF dans Google, mais je n'ai pas eu le temps de tout ouvrir et de tout lire.
benc
Le futur mot réservé «abstrait» n'est mentionné ni dans la spécification ES5 ni dans le projet ES6. D'où vient cela?
Vladimir Panteleev
2
Trouvé! Il était présent dans ES3 comme futur mot réservé, avec une longue liste d'autres, mais il a été supprimé dans ES5.
Vladimir Panteleev
13
Quel genre de réponse est-ce. Ça ne rime même pas.
Gajus
1
Je ne peux pas voir letici, mais je le vois dans le docu: ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
prosti
20

Je lisais juste à ce sujet dans JavaScript & jQuery: The Missing Manual :

Tous ces mots réservés ne poseront pas de problèmes dans tous les navigateurs, mais il est préférable d'éviter ces noms lors de la dénomination 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 .

Pré-défini des variables globales dans le navigateur: alert, blur, closed, document, focus, frames, history, innerHeight, innerWidth, length, location, navigator, open, outerHeight, outerWidth, parent, screen, screenX, screenY, statusbar, window .

c'est moi
la source
Emplacement utilisé dans un script et comportement très étrange, message très utile.
alimack
2
"Réservé pour une utilisation future" :: Tous les mots Java ... vraiment paresseux.
Eddie B
2
Notez que «réservé» n'est pas la même chose que «pré-initialisé». Dans le navigateur, alertest déjà initialisé, mais rien ne vous empêche de la réaffecter alert = 5. Cependant, vous ne pouvez pas définir windowsur 5, mais vous pouvez l'utiliser comme variable locale. Ce n'est pas possible avec des mots clés réservés, utilisation future, null, false, true.
Ruben Verborgh
Les réponses les plus votées sont manquées yieldpar ma vérification rapide, donc +1 de ma part. Ceux-ci peuvent dans ES5.1 être activés en mode strict:implements interface let package private protected public static yield
5

Voici un moyen indépendant du navigateur et de la version linguistique 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 constitue le cœur 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;
}
GOTO 0
la source
7
Si vous devez l'utiliser evalpour quelque chose, cela signifie probablement que vous le faites mal.
SeinopSys
8
C'est parfait pour un cas de test exécuté au moment de la construction, complètement valide tant que ce n'est pas quelque chose que vous avez exposé au moment de l'exécution.
Abdullah Jibaly
3

Aucune des réponses actuelles ne prévient qu'indépendamment de ES-Dialect, les navigateurs ont tendance à avoir leurs propres listes de mots-clés réservés, de méthodes, etc. en plus de ce qu'ES dicte.

Par exemple, IE9 interdit l' utilisation des noms logiques comme: 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 complète «actuellement connue» spécifique à IE9. Je n'ai encore trouvé aucune référence officielle à eux sur msdn (ou ailleurs).

GitaarLAB
la source
1

Voici une liste du livre Eloquent JavaScript:

  • break
  • case
  • catch
  • class
  • const
  • continue
  • debugger
  • default
  • delete
  • do
  • else
  • enum
  • export
  • extend
  • false
  • finally
  • for
  • function
  • if
  • implements
  • import
  • in
  • instanceof
  • interface
  • let
  • new
  • null
  • package
  • private
  • protected
  • public
  • return
  • static
  • super
  • switch
  • this
  • throw
  • true
  • try
  • typeof
  • var
  • void
  • while
  • with
  • yield
starhopperx
la source
-1

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 la liste des mots - clés réservés par la norme, il a aussi une longue liste de mots - clés que vous devriez éviter dans certains contextes; par exemple, ne pas utiliser le nom alertlors de l'écriture de code à exécuter dans un navigateur. Cela m'a aidé à comprendre pourquoi certains mots étaient mis en évidence en tant que mots-clés dans mon éditeur, même si je savais qu'il ne s'agissait pas de mots-clés.

Reikim
la source