Risposte:
Dovremmo collegarci alle effettive fonti di informazioni, piuttosto che solo al primo 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 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.
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
let
qui, ma vedo che nel docu: ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
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
.
alert
è già inizializzato, ma nulla ti impedisce di riassegnare alert = 5
. Tuttavia, non è possibile impostare window
su 5, ma è possibile utilizzarlo come variabile locale. Questo non è possibile con le parole chiave riservate, l'uso futuro, null
, false
, true
.
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;
}
eval
qualcosa, molto probabilmente significa che stai sbagliando.
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).
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
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 alert
durante 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.