Parole chiave riservate in JavaScript


Risposte:



1476

Ecco la mia poesia, che include tutte le parole chiave riservate in JavaScript ed è dedicata a coloro che rimangono onesti al momento, e non solo cercano di segnare:

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.

5
screenshots.firefox.com/MVw02wDrHPi197kK/stackoverflow.com non mi viene voglia di fare clic su di esso
Kuba Orlik

61

Per integrare la risposta di Benc , vedere Standard ECMA-262 . Queste sono le parole riservate ufficiali, ma solo un pedante ignora l'implementazione per rispettare lo standard. Per le parole riservate delle implementazioni più popolari, ovvero Firefox e Internet Explorer, vedi la risposta di benc.

Le parole riservate in script EMCAScript-262 sono la chiave di s, Future riservati Word s, NullLiteral , e BooleanLiteral s, dove le Parole sono

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

le future parole riservate sono

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

il NullLiteral è

null

e i BooleanLiteral sono

true
false

Joseph, grazie per aver aggiunto queste informazioni. Ho trovato quel PDF su Google, ma non ho avuto il tempo di aprire e leggere tutto.
benc,

La parola riservata "astratta" non è menzionata né nella specifica ES5 né nella bozza ES6. Da dove viene?
Vladimir Panteleev,

2
Trovato! Era presente in ES3 come futura parola riservata, insieme a un lungo elenco di altri, ma è stato rimosso in ES5.
Vladimir Panteleev,

13
Che tipo di risposta è questa. Non fa nemmeno rima.
Gajus,

1
Non riesco a vedere letqui, ma vedo che nel docu: ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
prosti

20

Stavo solo leggendo questo in JavaScript e jQuery: The Missing Manual :

Non tutte queste parole riservate causeranno problemi in tutti i browser, ma è meglio evitare questi nomi quando si nominano le variabili.

JavaScript parole chiave: 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 .

Riservato per uso futuro: 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 .

Pre-definito le variabili globali nel browser: alert, blur, closed, document, focus, frames, history, innerHeight, innerWidth, length, location, navigator, open, outerHeight, outerWidth, parent, screen, screenX, screenY, statusbar, window .


Ha usato la posizione in uno script e ha ottenuto un comportamento molto strano, post molto utile.
Alimack

2
"Riservato per uso futuro" :: Tutte le parole Java ... davvero pigro.
Eddie B,

2
Si noti che "riservato" non è lo stesso di "pre-inizializzato". Nel browser, alertè già inizializzato, ma nulla ti impedisce di riassegnare alert = 5. Tuttavia, non è possibile impostare windowsu 5, ma è possibile utilizzarlo come variabile locale. Questo non è possibile con le parole chiave riservate, l'uso futuro, null, false, true.
Ruben Verborgh,

Le risposte più votate sono mancate yielddal mio controllo rapido, quindi +1 da parte mia. Questi possono essere attivati ​​in ES5.1 in modalità rigorosa:implements interface let package private protected public static yield

5

Ecco un modo agnostico di versione browser e lingua per determinare se una determinata stringa viene trattata come una parola chiave dal motore JavaScript. Ringraziamenti a questa risposta che fornisce il nucleo della soluzione.

function isReservedKeyword(wordToCheck) {
    var reservedWord = false;
    if (/^[a-z]+$/.test(wordToCheck)) {
        try {
            eval('var ' + wordToCheck + ' = 1');
        } catch (error) {
            reservedWord = true;
        }
    }
    return reservedWord;
}

7
Se devi usare evalqualcosa, molto probabilmente significa che stai sbagliando.
SeinopSys,

8
Questo è perfetto per un caso di test eseguito in fase di compilazione, completamente valido purché non sia qualcosa che hai esposto in fase di esecuzione.
Abdullah Jibaly,

3

Nessuna delle risposte attuali avverte che, indipendentemente da ES-Dialect, i browser tendono ad avere i propri elenchi di parole chiave, metodi ecc. Riservati oltre a ciò che ES richiede.

Ad esempio, IE9 vieta l'uso di nomi logici come: addFilter, removeFilter(che, tra gli altri, sono i metodi riservati).

Vedi http://www.jabcreations.com/blog/internet-explorer-9 per un elenco "attualmente noto" più ampio specifico per IE9. Ho ancora trovato alcun riferimento ufficiale a loro su msdn (o altrove).


1

Ecco un elenco dal libro JavaScript eloquente:

  • 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

-1

la risposta di benc è eccellente, ma per i miei due centesimi, mi piace la pagina di w3schools su questo:

http://www.w3schools.com/js/js_reserved.asp

Oltre a elencare le parole chiave riservate dallo standard, ha anche un lungo elenco di parole chiave che dovresti evitare in determinati contesti; ad esempio, non usare il nome alertdurante la scrittura del codice da eseguire in un browser. Mi ha aiutato a capire perché certe parole fossero evidenziate come parole chiave nel mio editor anche se sapevo che non erano parole chiave.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.