Jakie słowa kluczowe JavaScript (nazwy funkcji, zmienne itp.) Są zarezerwowane?
Jakie słowa kluczowe JavaScript (nazwy funkcji, zmienne itp.) Są zarezerwowane?
Odpowiedzi:
Powinniśmy podawać linki do rzeczywistych źródeł informacji, a nie tylko do najpopularniejszych hitów 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
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.
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 są
true
false
lettutaj, ale widzę to w dokumencie
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.
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.
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;
}
evalcoś używać , najprawdopodobniej oznacza to, że robisz to źle.
Ż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).
Oto lista z książki Eloquent JavaScript:
breakcasecatchclassconstcontinuedebuggerdefaultdeletedoelseenumexportextendfalsefinallyforfunctionifimplementsimportininstanceofinterfaceletnewnullpackageprivateprotectedpublicreturnstaticsuperswitchthisthrowtruetrytypeofvarvoidwhilewithyieldBenc 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.