В JavaScript имеется несколько зарезервированных слов. Они не могут быть идентификаторами (именами переменных, функций и меток циклов) в Java_ Script_программах. В табл. 2.1 перечислены ключевые слова, стандартизован_ ные в ECMAScript v3. Для интерпретатора JavaScript они имеют специальное значение, т. к. являются частью синтаксиса языка.
Таблица 2.1. Зарезервированные ключевые слова JavaScript
break
do
if
switch
typeof
case
else
in
this
var
catch
false
instanceof
throw
void
continue
finally
new
true
while
default
for
null
try
with
delete
function
return
В табл. 2.2 перечислены другие ключевые слова. В настоящее время они в Java_ Script не используются, но зарезервированы ECMAScript v3 в качестве возмож_ ных будущих расширений языка.
Таблица 2.2. Слова, зарезервированные для расширений ECMA
abstract
double
goto
native
static
Boolean
enum
implements
package
super
byte
export
import
private
synchronized
char
extends
int
protected
throws
class
final
interface
public
transient
const
float
long
short
volatile
debugger
Помимо нескольких только что перечисленных формально зарезервированных слов текущие проекты стандарта ECMAScript v4 рассматривают применение ключевых слов as, is, namespace и use. Хотя текущие интерпретаторы JavaScript не запрещают использование этих четырех слов в качестве идентификаторов, однако все равно следует этого избегать.
38 Глава 2. Лексическая структура
Кроме того, следует избегать использования идентификаторов глобальных пере_ менных и функций, предопределенных в языке JavaScript. Если попытаться создать переменную или функцию с таким идентификатором, то это будет при_ водить либо к ошибке (если свойство определено как доступное только для чте_ ния), либо к переопределению глобальной переменной или функции, чего точно не стоит делать, если вы не стремитесь к этому преднамеренно. В табл. 2.3 пере_ числены имена глобальных переменных и функций, определяемых стандартом ECMAScript v 3. Конкретные реализации могут содержать свои предопределен_ ные элементы с глобальной областью видимости, кроме того, каждая конкрет_ ная платформа JavaScript (клиентская, серверная и прочие) может еще больше расширять этот список.1
Таблица 2.3. Другие идентификаторы, которых стоит избегать
arguments
encodeURI
Infinity
Object
String
Array
Error
isFinite
parseFloat
SyntaxError
Boolean
escape
isNaN
parseInt
TypeError
Date
eval
Math
RangeError
undefined
decodeURI
EvalError
NaN
ReferenceError
unescape
decodeURIcomponent
Function
Number
RegExp
URIError
1 При описании объекта Window в четвертой части книги приведен список глобаль_ ных переменных и функций, определенных в клиентском JavaScript.