Zarezerwowane słowa kluczowe w JavaScript

Odpowiedzi:

1476

Oto mój wiersz, który zawiera wszystkie zarezerwowane słowa kluczowe w JavaScript i jest przeznaczony dla tych, którzy pozostają uczciwi w danym momencie, a nie tylko próbują zdobyć punkty:

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
źródło
5
screenshots.firefox.com/MVw02wDrHPi197kK/stackoverflow.com sprawia, że ​​nie chcę tego klikać
Kuba Orlik
61

Aby uzupełnić odpowiedź Benca , zobacz Standard ECMA-262 . To są oficjalne zastrzeżone słowa, ale tylko pedant ignoruje implementację w celu poszanowania standardu. Aby zapoznać się z zastrzeżonymi słowami najpopularniejszych implementacji, czyli Firefoxa i Internet Explorera, zobacz odpowiedź benca.

Słowa zastrzeżone w EMCAScript-262 to słowa kluczowe , słowa zarezerwowane w przyszłości , NullLiteral i BooleanLiteral , gdzie słowa kluczowe to

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

Są to przyszłe zastrzeżone słowa

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

NullLiteral jest

null

a BooleanLiteral

true
false
Joseph Holsten
źródło
Joseph, dzięki za dodanie tych informacji. Znalazłem ten plik PDF w Google, ale nie miałem czasu go otworzyć i przeczytać.
benc
„Abstrakcyjne” przyszłe zastrzeżone słowo nie jest wymienione ani w specyfikacji ES5, ani w projekcie ES6. Skąd to pochodzi?
Vladimir Panteleev
2
Znalazłem to! Było obecne w ES3 jako przyszłe słowo zastrzeżone, wraz z długą listą innych, ale zostało usunięte w ES5.
Vladimir Panteleev
13
Co to za odpowiedź. Nawet się nie rymuje.
Gajus
1
Nie widzę tego lettutaj, ale widzę to w dokumencie
prosti
20

Właśnie czytałem o tym w JavaScript i jQuery: The Missing Manual :

Nie wszystkie z tych zastrzeżonych słów będą powodować problemy we wszystkich przeglądarkach, ale podczas nazywania zmiennych najlepiej omijać te nazwy.

JavaScript Słowa kluczowe: 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 .

Zarezerwowane do użytku w przyszłości: 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 .

Predefiniowane zmienne globalne w przeglądarce: alert, blur, closed, document, focus, frames, history, innerHeight, innerWidth, length, location, navigator, open, outerHeight, outerWidth, parent, screen, screenX, screenY, statusbar, window .

to ja
źródło
Użyłem lokalizacji w skrypcie i uzyskałem bardzo dziwne zachowanie, bardzo przydatny post.
alimack
2
"Zarezerwowane do użytku w przyszłości" :: Wszystkie słowa Java ... naprawdę dość leniwe.
Eddie B
2
Zauważ, że „zarezerwowane” to nie to samo, co „wstępnie zainicjowane”. W przeglądarce alertjest już zainicjowany, ale nic nie powstrzymuje Cię przed ponownym przypisaniem alert = 5. Jednak nie możesz ustawić windowna 5, ale możesz użyć go jako zmiennej lokalnej. To nie jest możliwe przy użyciu słów kluczowych, zarezerwowanych przyszłości null, false, true.
Ruben Verborgh,
Więcej zagłosowanych odpowiedzi pominiętych yieldprzez moje szybkie sprawdzenie, więc +1 ode mnie. W ES5.1 można je aktywować w trybie ścisłym:implements interface let package private protected public static yield
5

Oto sposób określania niezależnie od przeglądarki i wersji językowej, czy określony ciąg znaków jest traktowany jako słowo kluczowe przez silnik JavaScript. Kredyty na tę odpowiedź, która stanowi rdzeń rozwiązania.

function isReservedKeyword(wordToCheck) {
    var reservedWord = false;
    if (/^[a-z]+$/.test(wordToCheck)) {
        try {
            eval('var ' + wordToCheck + ' = 1');
        } catch (error) {
            reservedWord = true;
        }
    }
    return reservedWord;
}
GOTO 0
źródło
7
Jeśli musisz evalcoś używać , najprawdopodobniej oznacza to, że robisz to źle.
SeinopSys
8
Jest to idealne rozwiązanie dla przypadku testowego uruchamianego w czasie kompilacji, całkowicie poprawne, o ile nie jest to coś, co zostało ujawnione w czasie wykonywania.
Abdullah Jibaly
3

Żadna z aktualnych odpowiedzi nie ostrzega, że ​​niezależnie od języka ES-Dialect, przeglądarki mają zwykle własne listy zarezerwowanych słów kluczowych, metod itp. Oprócz tego, co dyktuje ES.

Na przykład, IE9 zabrania używania logicznych nazwach takich jak: addFilter,removeFilter (one, między innymi, są zastrzeżone metody).

Zobacz http://www.jabcreations.com/blog/internet-explorer-9, aby uzyskać bardziej obszerną listę „obecnie znanych” specyficznych dla IE9. Nie znalazłem jeszcze oficjalnego odniesienia do nich w msdn (lub w innym miejscu).

GitaarLAB
źródło
1

Oto lista z książki 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
źródło
-1

Benc odpowiedź jest doskonała, ale za moje dwa centy podoba mi się ta strona w3schools:

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

Oprócz wyszczególnienia słów kluczowych zarezerwowanych przez standard, zawiera również długą listę słów kluczowych, których należy unikać w niektórych kontekstach; na przykład nieużywanie nazwy alertpodczas pisania kodu do uruchomienia w przeglądarce. Pomogło mi to zrozumieć, dlaczego niektóre słowa były wyróżniane jako słowa kluczowe w moim edytorze, mimo że wiedziałem, że nie są to słowa kluczowe.

Reikim
źródło