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
let
tutaj, 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
.
alert
jest już zainicjowany, ale nic nie powstrzymuje Cię przed ponownym przypisaniem alert = 5
. Jednak nie możesz ustawić window
na 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;
}
eval
coś 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:
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
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 alert
podczas 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.