Quels mots-clés JavaScript (noms de fonctions, variables, etc.) sont réservés?
Quels mots-clés JavaScript (noms de fonctions, variables, etc.) sont réservés?
Réponses:
Nous devrions créer un lien vers les sources d'informations réelles, plutôt que vers le meilleur hit 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
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.
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
let
ici, mais je le vois dans le docu: ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
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
.
alert
est déjà initialisé, mais rien ne vous empêche de la réaffecter alert = 5
. Cependant, vous ne pouvez pas définir window
sur 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
.
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;
}
eval
pour quelque chose, cela signifie probablement que vous le faites mal.
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).
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
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 alert
lors 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.