Parole chiave riservate in JavaScript

Quali parole chiave JavaScript (nomi di funzioni, variabili, ecc.) Sono riservate?

Dovremmo collegarci alle fonti effettive di informazioni, piuttosto che al solo hit di google.

http://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Reserved_Words

JScript 8.0: http://msdn.microsoft.com/en-us/library/ttyab5c8.aspx

Ecco la mia poesia, che include tutte le parole chiave riservate in JavaScript ed è dedicata a coloro che rimangono onesti nel momento e non provano solo a 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. 

Per integrare la risposta di benc , vedere lo 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, vedere la risposta di benc.

Le parole riservate in EMCAScript-262 sono Parola chiave , Parola riservata futuro , NullLiteral e BooleanLiteral s, dove le parole chiave 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 parole riservate al futuro 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 il BooleanLiteral s sono

 true false 

Stavo leggendo su 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.

Parole chiave 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 .

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 .

Variabili globali predefinite nel browser: alert, blur, closed, document, focus, frames, history, innerHeight, innerWidth, length, location, navigator, open, outerHeight, outerWidth, parent, screen, screenX, screenY, statusbar, window .

Ecco una versione agnostica del browser e della lingua per determinare se una particolare stringa viene trattata come una parola chiave dal motore JavaScript. Crediti a questa risposta che fornisce il nucleo della soluzione.

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

Nessuna delle risposte attuali avverte che, indipendentemente da ES-Dialect, i browser tendono ad avere i propri elenchi di parole chiave riservate, metodi ecc. In aggiunta a quanto dettato da ES.

Ad esempio, IE9 proibisce l’uso di nomi logici come: addFilter , removeFilter (tra l’altro, sono metodi riservati).

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

Ecco una lista dal libro JavaScript Eloquent:

  • 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

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 da evitare in determinati contesti; ad esempio, non utilizzare l’ alert del nome durante la scrittura del codice da eseguire in un browser. Mi ha aiutato a capire perché alcune parole venivano evidenziate come parole chiave nel mio editor anche se sapevo che non erano parole chiave.