Professional Documents
Culture Documents
ru
;)
ECMA-262, 3
03.2009
: http://javascript.ru/ecma
ECMA , JavaScript (Netscape) JScript (Microsoft). Brendan Eich Netscape
Navigator 2.
Netscape - Microsoft, Internet Explorer 3.0, -
.
1996. ECMA
ECMA 1997.
ECMA ISO/IEC JTC 1
ISO/IEC 16262 1998. 1998
ECMA ECMA-262, ISO/IEC
16262. - .
, , ,
try/catch, ,
.
.
,
,
W3C Wireless Application Protocol Forum.
3- ECMA-262 ECMA
1999 .
. . - ,
. javascript 1.5. Javascript 1.6
, 1.5 Mozilla.
, Internet Explorer, Opera
http://javascript.ru/ecma[14.03.09 12:52:12]
Google Chrome, ( ) .
2009
, javascript.ru.
ECMA.
1.
2.
3.
4.
4.1 Web
4.2
4.2.1
4.3
4.3.1
4.3.2
4.3.3
4.3.4
4.3.5
4.3.6
4.3.7
4.3.8
4.3.9
4.3.10
4.3.11
4.3.12 Null
4.3.13
4.3.14 Boolean
4.3.15 Boolean
4.3.16
4.3.17 String
4.3.18 String
4.3.19
4.3.20 Number
4.3.21 Number
4.3.22
4.3.23 NaN
5.
5.1
5.1.1 -
5.1.2
5.1.3
5.1.4
5.1.5
5.2
6.
7.
7.1
7.2
http://javascript.ru/ecma[14.03.09 12:52:12]
7.3
7.4
7.5
7.5.1
7.5.2
7.5.3 ,
7.6
7.7
7.8
7.8.1 Null
7.8.2
7.8.3
7.8.4
7.8.5
7.9
7.9.1
7.9.2
8.
8.1 Undefined
8.2 Null
8.3 Boolean
8.4 String
8.5 Number
8.6 Object
8.6.1
8.6.2
8.7 Reference
8.7.1 (V)
8.7.2 (V, W)
8.8 List
8.9 Completion
9.
9.1 ToPrimitive
9.2 ToBoolean
9.3 ToNumber
9.3.1 ToNumber String
9.4 ToInteger
9.5 ToInt32: ( 32- )
9.6 ToUint32: ( 32- )
9.7 ToUint16: ( 16- )
9.8 ToString
9.8.1 ToString Number
9.9 ToObject
10.
10.1
10.1.1 Function
10.1.2
10.1.3
10.1.4
10.1.5
10.1.6
http://javascript.ru/ecma[14.03.09 12:52:12]
10.1.7 This
10.1.8
10.2
10.2.1
10.2.2 Eval-
10.2.3
11.
11.1
11.1.1 this
11.1.2
11.1.3
11.1.4
11.1.5
11.1.6
11.2
11.2.1
11.2.2 new
11.2.3
11.2.4
11.2.5
11.3
11.3.1
11.3.2
11.4
11.4.1 delete
11.4.2 void
11.4.3 typeof
11.4.4
11.4.5
11.4.6 +
11.4.7 11.4.8 ( ~ )
11.4.9 ( ! )
11.5
11.5.1 *
11.5.2 /
11.5.3 %
11.6
11.6.1 ( + )
11.6.2 ( - )
11.6.3 ( +, - )
Number
11.7
11.7.1 ( << )
11.7.2 ( >> )
11.7.3 ( >>> )
11.8
11.8.1 - ( < )
11.8.2 - ( > )
11.8.3 ( <= )
11.8.4 -- ( >= )
http://javascript.ru/ecma[14.03.09 12:52:12]
12.
13.
14.
15.
11.8.5
11.8.6 instanceof
11.8.7 in
11.9
11.9.1 ( == )
11.9.2 - ( != )
11.9.3
11.9.4 ( === )
11.9.5 ( !== )
11.9.6
11.10
11.11
11.12 ( ?: )
11.13
11.13.1 ( = )
11.13.2 ( op= )
11.14 - ( , )
12.1
12.2
12.3
12.4 -
12.5 if
12.6
12.6.1 do-while
12.6.2 while
12.6.3 for
12.6.4 for-in
12.7 continue
12.8 break
12.9 return
12.10 with
12.11 switch
12.12
12.13 throw
12.14 try
13.1
13.1.1
13.1.2
13.2 Function
13.2.1 [[Call]]
13.2.2 [[Construct]]
ECMAScript
15.1
15.1.1 -
15.1.2 -
15.1.3 - URI
15.1.4 -
15.1.5
http://javascript.ru/ecma[14.03.09 12:52:12]
15.2 Object
15.2.1 Object
15.2.2 Object
15.2.3 Object
15.2.4 - Object
15.2.5 Object
15.3 Function
15.3.1 Function
15.3.2 Function
15.3.3 Function
15.3.4 - Function
15.3.5 Function
15.4 Array
15.4.1 Array
15.4.2 Array
15.4.3 Array
15.2.4 - Array
15.4.5 Array
15.5 String
15.5.1 String
15.5.2 String
15.5.3 String
15.5.4 - String
15.5.5 String
15.6 Boolean
15.6.1 Boolean
15.6.2 Boolean
15.6.3 Boolean
15.6.4 - Boolean
15.6.5 Boolean
15.7 Number
15.7.1 Number
15.7.2 Number
15.7.3 Number
15.7.4 - Number
15.7.5 Number
15.8 Math
15.8.1 - Math
15.8.2 - Math
15.9 Date
15.9.1 Date
15.9.2 Date
15.9.3 Date
15.9.4 Object
15.9.5 - Date
15.9.6 Date
15.10 RegExp ( )
15.10.1
15.10.2
15.10.3 RegExp
http://javascript.ru/ecma[14.03.09 12:52:12]
15.10.4 RegExp
15.10.5 RegExp
15.10.6 - RegExp
15.10.7 RegExp
15.11 Error
15.11.1 Error
15.11.2 Error
15.11.3 Error
15.11.4 - Error
15.11.5 Error
15.11.6 ,
15.11.7 NativeError
16.
A -
B -
: .
1.
ECMAScript.
C
2.
ECMAScript
, , , ,
, .
Unicode Standard, 2.1
, ISO/IEC 10646-1 UCS-2 UTF-16
, 3 . ISO/IEC 10646-1
, , BMP, 300.
, , UTF-16.
ECMAScript
, , , ,
. , ECMAScript
, ,
, .
ECMAScript
, .
, ECMAScript
, ", ",
http://javascript.ru/ecma[14.03.09 12:52:12]
.7.5.3 .
3.
ISO/IEC 9899: 1996 Programming Languages - C, including amendment 1 and technical
corrigenda 1 and 2.
ISO/IEC 10646-1: 1993 Information Technology --Universal Multiple-Octet Coded Character
Set (UCS) plus its amendments and corrigenda.
Unicode Inc. (1996), The Unicode Standard , Version 2.0. ISBN: 0-201-48345-9, AddisonWesley Publishing Co., Menlo Park, California.
Unicode Inc. (1998), Unicode Technical Report #8: The Unicode Standard , Version 2.1.
Unicode Inc. (1998), Unicode Technical Report #15: Unicode Normalization Forms.
ANSI/IEEE Std 754-1985: IEEE Standard for Binary Floating-Point Arithmetic. Institute of
Electrical and Electronic Engineers, New York (1985).
4.
ECMAScript.
ECMAScript - - ,
. ECMAScript , ,
.
.
, ECMAScript
, ,
,
,
, ,
, ,
ECMAScript.
- , ,
.
,
. ,
,
. ,
.
http://javascript.ru/ecma[14.03.09 12:52:12]
ECMAScript -
"" -
- .
ECMAScript ,
.
ECMAScript ,
, Java Self.
:
Gosling, James, Bill Joy and Guy Steele. The Java Language Specification. Addison
Wesley Publishing Co., 1996.
Ungar, David, and Smith, Randall B. Self: The Power of Simplicity. OOPSLA '87
Conference Proceedings, pp. 227-241, Orlando, FL, October 1987.
4.1
- ECMAScript
, , , , , ,
, , , , ,
, cookies -. ,
, ,
, , , , .
HTML,
. , ,
, .
- ,
, , ,
.
, -.
- , ECMAScript,
, ECMAScript.
4.2
ECMAScript -
. .
ECMAScript :
, ECMAScript
. ECMAScript ,
, ,
(, ReadOnly
true, ECMAScript
. ,
, . - ,
http://javascript.ru/ecma[14.03.09 12:52:12]
.
, ,
, .
:
CF - ( ).
new : cf1, cf2, cf3, cf4 cf5.
q1 q2.
; , , cf3 CFp.
CF P1 P2,
CFp, cf1, cf2, cf3, cf4 cf5. CFP1 CFp cf1, cf2, cf3, cf4 cf5 (
CF), , CFp,
, q1, q2 CFP1. , CF CFp
.
, ,
. ,
.
cf1, cf2, cf3, cf4 cf5 CFp.
4.3
, ECMAScript.
4.3.1
- .
4.3.2
.
4.3.3
- Object. ,
, . ,
, .
4.3.4
- Function, .
-,
.
4.3.5
- , ,
ECMAScript. ,
,
.
constructor.prototype, ,
, , , .
4.3.6
- , ECMAScript
. .
,
ECMAScript.
4.3.7
- , ECMAScript
,
ECMAScript. ECMAScript
, ECMAScript
. .
4.3.8
- ,
ECMAScript. , ,
.
4.3.9
(undefined) - , ,
.
4.3.10
Undefined , undefined.
http://javascript.ru/ecma[14.03.09 12:52:12]
4.3.11
(null) - ,
.
4.3.12 Null
Null , null.
4.3.13
- Boolean: true ()
false ().
4.3.14 Boolean
Boolean
. true, - false.
4.3.15 Boolean
Boolean - Object,
Boolean. Boolean Boolean
new , .
() ,
. Boolean .
4.3.16
- String,
16-
.
16- UTF-16,
, ,
16- .
4.3.17 String
String .
4.3.18 String
- Number,
http://javascript.ru/ecma[14.03.09 12:52:12]
.
4.3.20 Number
Number - , . ECMAScript
64- IEEE
754, "-" (NaN),
.
4.3.21 Number
Number - Object,
Number. Number Number
new , .
() ,
. Number
Number (15.7.1).
4.3.22
Infinity
. Number.
4.3.23 NaN
NaN " " IEEE.
Number.
5.
5.1
- ,
ECMAScript.
5.1.1 -
- .
, ,
.
.
, ,
, -
, , (, )
,
,
.
http://javascript.ru/ecma[14.03.09 12:52:12]
5.1.2
ECMAScript 7.
. ,
,
.
, ,
ECMAScript ECMAScript.
, ,
ECMAScript. , , ,
(7.9).
. ( "/* --- */",
, )
, ;
,
,
.
- ECMAScript 15.10.
. ,
,
.
-
("::") .
-.
5.1.3
.
,
, .
9.3.1.
(":::") .
5.1.4
.
,
.
(":") . ,
0, 0, 0 0, ,
ECMAScript.
, , ,
" "
(
).
,
"" .
5.1.5
, ,
.
. , ,
ASCII-,
.
.
, . (
, .) ,
,
. , :
With :
with (
, With with ,
" ", " ", , ,
.
. :
,
,
, ,
. ,
.
, ,
.
.
http://javascript.ru/ecma[14.03.09 12:52:12]
"",
, () .
, ,
: . , :
:
:
:
for ( In
:
for (; ; )
for ( In ; ;
, , :
:
for (;; )
for (; ; )
for ( In ;; opt )
for ( In ; ; )
, , :
:
for (;;)
for (;; )
for (; ;)
for (; ; )
for ( In ;;)
for ( In ;; )
for ( In ; ;)
for ( In ; ; )
,
.
"[]" - ,
.
http://javascript.ru/ecma[14.03.09 12:52:12]
"[ ]" , ,
.
, .
. ,
,
. ,
::
0 1 2 3 4 5 6 7 8 9
::
::
n [ { 1, 3, 5, 7, 9}]
[ ]
n, ,
, ,
.
"[ ]"
, ,
, .. ,
. , :
Return :
return [ ]
, ,
return .
,
,
,
.
" " (-)
, ,
. ,
ECMAScript :
::
1 2 3 4 5 6 7 8 9
http://javascript.ru/ecma[14.03.09 12:52:12]
1
2
3
4
5
6
7
8
9
-
, ,
, .
,
. " ",
, . , :
::
,
, ,
, .
, ,
,
(Roman):
::
5.2
,
. .
,
.
,
" x" , x
. ( n)
" n". ( x) " x".
, , , , ,
,
,
, .
,
,
http://javascript.ru/ecma[14.03.09 12:52:12]
.
,
, .
, +0 -0,
0.
abs( x) x, -x, x
( ), x .
sign(x) 1 x -1
x. sign , x
.
"x modulo y " ( y )
k , y ( ), , abs( k )< abs( y ) x-k = q * y
q .
floor(x) (
), x.
6.
ECMAScript
2.1
UTF-16. C
( ), 15
(UAX-15). ECMAScript
,
.
::
Unicode
ECMAScript .
, , ,
, ,
.
, ,
http://javascript.ru/ecma[14.03.09 12:52:12]
.
" " ""
16- ,
UTF-16.
" "
,
( 16- , ,
).
, .
" ",
.
,
( ) escape, : \u
escape .
escape .
escape-
.
1
"" "
" 16- , UTF-16
, , .. " "
16- .
2
ECMAScript Java
escape-. Java, , escape \u000A ,
( 000A - " "), ,
, .
, escape- \u000A
Java, ,
( Java,
, \u000A \n). ECMAScript
escape-
, , . ,
escape-
ECMAScript
,
.
7.
http://javascript.ru/ecma[14.03.09 12:52:12]
ECMAScript
: , ,
. ,
.
.
,
(/) -- (/=).
.
, ,
, ;
, (/)
. ,
.
::
::
7.1
(, "Cf"
, LEFT-TO-RIGHT MARK RIGHT-TO-LEFT MARK)
,
( ),
.
.
ECMAScript.
.
,
escape- (. 7.6) .
7.2
http://javascript.ru/ecma[14.03.09 12:52:12]
( ).
. ,
(
), -
.
:
\u0009
\u000B
\u000C
\u0020
\u00A0
"Zs"
" "
<TAB>
<VT>
<FF>
<SP>
<NBSP>
<USP>
::
<TAB>
<VT>
<FF>
<SP>
<NBSP>
<USP>
7.3
,
( ).
,
. ,
, ,
. - ,
.
(7.9).
:
\u000A
\u000D
\u2028
\u2029
<LF>
<CR>
<LS>
<PS>
http://javascript.ru/ecma[14.03.09 12:52:12]
::
<LF>
<CR>
<LS>
<PS>
7.4
: .
.
,
, , ,
// . ,
,
. ,
,
(7.9).
.
,
.
.
::
::
/*
*/
::
*
::
*
::
::
/
::
http://javascript.ru/ecma[14.03.09 12:52:12]
//
::
::
7.5
::
7.5.1
::
Null
7.5.2
ECMAScript.
ECMAScript
::
break else new var case finally return void catch for switch while continue function
this with default if throw delete in try do instanceof typeof
7.5.3 ,
, , ,
.
:: one of
http://javascript.ru/ecma[14.03.09 12:52:12]
abstract enum int short boolean export interface static byte extends long super char
final native synchronized class float package throws const goto private transient
debugger implements protected volatile double import public
7.6
, 5.16
3.0, .
,
. ,
2.1
ECMAScript.
ECMAScript ,
.
:
($) (_)
.
.
escape-
Escape (. 7.8.4). ( \),
Escape,
. Escape
. , \
Escape , ,
, .
, ,
( ,
ECMAScript ).
, C
, .
::
::
::
$
_
\
Escape
http://javascript.ru/ecma[14.03.09 12:52:12]
::
\ Escape
: "- (Mn)"
" (Mc)"
" (Nd)"
" (Pc)"
Escape
7.8.4.
::
0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
7.7
::
{
}
(
)
[
]
.
;
,
<
>
<=
>=
==
!=
===
!==
+
http://javascript.ru/ecma[14.03.09 12:52:12]
*
%
++
-<<
>>
>>>
&
|
^
!
~
&&
||
?
:
=
+=
-=
*=
%=
<<=
>>=
>>>=
&=
|=
^=
::
/
/=
7.8
::
Null
7.8.1 Null
Null ::
null
http://javascript.ru/ecma[14.03.09 12:52:12]
::
true
false
::
::
.
.
::
0
::
::
0 1 2 3 4 5 6 7 8 9
::
1 2 3 4 5 6 7 8 9
::
::
e E
::
+
-
http://javascript.ru/ecma[14.03.09 12:52:12]
::
0x
0X
, ,
.
,
3in
, : 3 in.
.
: (),
, .
:: .
::
.
:: .
.
:: .
( ,
10 -n ), n .
:: .
, 10 e , e
.
:: .
( (
, 10 -n )) 10 e , n
e .
::. ,
10 -n , n .
:: .
of , 10 e-n , n
e .
::
.
::
, 10 e , e
.
:: 0 0.
:: (
10 n ) of , n
.
http://javascript.ru/ecma[14.03.09 12:52:12]
:: .
:: (
10) .
::
.
:: .
:: + .
:: -
.
:: 0 :: 0 0.
:: 1 :: 1 ::
1 1. :: 2 :: 2
:: 2 2.
:: 3 :: 3 ::
3 3.
:: 4 :: 4 ::
4 4.
:: 5 :: 5 ::
5 5. :: 6 :: 6
:: 6 6.
:: 7 :: 7 ::
7 7.
:: 8 :: 8 ::
8 8.
:: 9 :: 9 ::
9 9. :: a :: A
10.
:: b :: B 11.
:: c :: C 12.
:: d :: D 13.
:: e :: E 14.
:: f :: F 15.
:: 0x
of .
:: 0X
of .
::
( of
16) .
,
Number. 0, +0. ,
(
8.5), ,
20 .
,
0,
, 0
.
,
http://javascript.ru/ecma[14.03.09 12:52:12]
0,
,
.
7.8.4
,
. escape.
::
" "
'
'
::
::
::
-
\ Escape
"
- \
SingleStringCharacter ::
-
\ Escape
'
- \
Escape ::
Escape
0 [ ]
Escape
Escape
Escape ::
Escape
Escape
Escape ::
' " \ b f n r t v
Escape ::
Escape
Escape ::
Escape
x
u
http://javascript.ru/ecma[14.03.09 12:52:12]
Escape ::
x
Escape ::
u
2 6.
7.8.3.
String. ()
() .
() 7.8.3.
:: "" .
:: '' .
:: " "
.
:: " "
.
::
, .
::
,
.
::
, .
::
,
.
:: - "
- \ .
:: \ Escape
Escape. ::
- ' - \
.
:: \ Escape
Escape.
Escape :: Escape
Escape .
Escape :: 0 [ ]
<NUL> ( 0000).
Escape :: Escape
Escape .
Escape :: Escape
Escape.
Escape :: Escape
, Escape
:
http://javascript.ru/ecma[14.03.09 12:52:12]
Escape-
\b
\u0008
\t
\u0009
\n
\u000A
\v
\u000B
\f
\u000C
\r
\u000D
\"
\u0022
\'
\u0027
\\
\u005C
( )
<BS>
<HT>
<LF>
<VT>
<FF>
<CR>
"
'
\
Escape :: Escape
Escape.
Escape :: Escape
.
Escape :: x
, (16
) .
Escape :: u
, (4096 (.. 16 3 )
) (256 (.. 16 2 )
) (16
) .
'' ,
\.
escape-, \n
\u000A.
7.8.5
- ,
RegExp ( 15.10). ,
.
; .
, === ( )
, . RegExp
new RegExp
( 15.10.4) RegExp ( 15.10.3).
. ,
, , .
http://javascript.ru/ecma[14.03.09 12:52:12]
,
,
, - ,
.
::
/
::
::
[]
::
* \ /
::
\ /
::
\
::
::
[]
;
, //
. ,
/(?:)/.
Object.
: ,
, , ,
. new RegExp ,
. new RegExp
,
,
,
.
http://javascript.ru/ecma[14.03.09 12:52:12]
7.9
ECMAScript ( , ,
-, do-while , continue , break ,
return, throw ) .
. ,
,
. , ,
.
7.9.1
( -),
,
-, :
1. -
.
2. - }.
,
,
.
,
, [
] ,
.
, ,
,
.
:
,
for ( 12.6.3).
:
:
[ ]
[ ]
++
--
Continue :
continue [ ]
Break :
break [ ]
http://javascript.ru/ecma[14.03.09 12:52:12]
Return :
return [ ]
Throw :
throw [ ]
:
++ -- ,
,
++ --,
++ --.
continue, break, return throw
,
continue, break, return throw .
ECMAScript :
++ -- ,
.
return throw ,
return throw .
break continue ,
break continue .
7.9.2
{ 1 2 } 3
ECMAScript,
. ,
{1
2 } 3
ECMAScript,
:
{ 1
;2 ;} 3;
ECMAScript.
for (a; b
)
http://javascript.ru/ecma[14.03.09 12:52:12]
ECMAScript
,
for .
for .
return
a + b
:
return;
a + b;
a + b ,
return, "" return.
a = b
++c
:
a = b;
++c;
++ ,
"" b ++.
b,
if (a > b)
else c = d
ECMAScript
else , ,
,
.
a = b + c
(d + e).print()
,
, ,
:
a = b +c(d + e).print()
, ,
http://javascript.ru/ecma[14.03.09 12:52:12]
,
.
8.
- , .
(Undefined, Null, Boolean, String, Number, Object, Reference, List
Completion). Reference, List Completion
.
8.1 Undefined
Undefined (" ") - undefined.
, ,
undefined.
8.2 Null
Null ("", "") - null.
8.3 Boolean
Boolean ("", "") ,
: true false.
8.4 String
String ("")
16-
(""). String
ECMAScript.
(. 6).
.
. ( )
0, ( ) 1, ..
(. . 16- ), .
, , , .
,
UTF-16. , UTF-16
, String ,
UTF-16. String (
) ,
16-
http://javascript.ru/ecma[14.03.09 12:52:12]
String
. ,
, (
, ..)
C ,
. ,
(, ,
). ,
ECMAScript C,
(
), escape- .
8.5 Number
Number ("") 18 437 736 874 454 810 627 (.., 2 64 -2 53 +3)
, 64-
IEEE 754 IEEE
, , 9007199254740990 (.., 2 53 -2)
"-" IEEE ECMAScript
NaN. (, NaN
NaN , NaN
.) "" , .
ECMAScript NaN .
,
.
+ - . (,
+Infinity ( Infinity) Infinity, Infinity
.)
18 437 736 874 454 810 624 (.. 2 64 -2 53 )
. , .
, .
, , .
+0 -0
. (,
+0 ( 0) -0.)
18 437 736 874 454 810 622 (.., 2 64 -2 53 -2)
:
18 428 729 675 200 069 632 (.., 2 64 -2 54 )
s * m * 2e
s +1 or -1, m - , 2 53 , 2 52
http://javascript.ru/ecma[14.03.09 12:52:12]
e - -1074 971 .
9 007 199 254 740 990 (.. 2 53 -2) :
s * m * 2e
s +1 or -1, m - , 2 52 e -1074.
, ,
2 53 , Number ( 0 : +0 -0).
, m,
( ) . .
" x", x
(
, ), ,
. Number,
-0 ,
Number: 2 1024 (.. +1 * 2 53 * 2 971) -2 1024 (.. -1 * 2 53 * 2 971 ).
, x.
, ,
2 1024 -2 1024 .
, 2 1024, +; -2 1024,
-; +0, -0
, x ; .
x. (
" " IEEE 754.)
ECMAScript
-2 31 2 31 -1 0 2 32 -1 .
Number,
32
2
.
. ToInt32 ToUint32 0 0 .
8.6 Object
Object ("") .
, .
8.6.1
:
ReadOnly
.
ECMAScript . ( ,
ReadOnly
,
. " " "
http://javascript.ru/ecma[14.03.09 12:52:12]
"!)
DontEnum for-in ( 12.6.4).
. .
DontDelete
delete 11.4.1.
-
.
Internal
.
.
8.6.2
.
. ECMAScript
,
.
[[ ]].
, ,
TypeError.
( ) : get put,
.
ECMAScript [[Prototype]].
null , .
. [[Prototype]]
get, put.
,
.
ECMAScript.
. ,
, .
[[Prototype]]
[[Class]]
.
, .
,
[[Value]]
.
[[Get]]
() .
(,
[[Put]]
.
)
, ,
[[CanPut]]
() [[Put]]
.
, ,
[[HasProperty]] ()
.
[[Delete]]
() .
,
[[DefaultValue]] ()
(
).
http://javascript.ru/ecma[14.03.09 12:52:12]
[[Construct]]
[[Call]]
[[HasInstance]] ()
[[Scope]]
[[Match]]
(,
)
. new .
, ,
.
, .
. ,
,
.
, ,
Value .
ECMAScript Function
[[HasInstance]].
, ,
Function.
MatchResult (. 15.10.2.1).
( )
[[Prototype]] [[Class]] [[Get]], [[Put]], [[CanPut]], [[HasProperty]], [[Delete]]
[[DefaultValue]]. ( , [[DefaultValue]]
TypeError.)
[[Prototype]] ("") , null,
[[Prototype]] (..
, [[Prototype]]
null).
[[Prototype]]
.
[[Class]]
. [[Class]]
[[Class]] .
[[Class]]
. ,
,
Object.prototype.toString (. 15.2.4.2).
[[Get]], [[Put]], [[CanPut]], [[HasProperty]], [[Delete]]
[[DefaultValue]] 8.6.2.1, 8.6.2.2, 8.6.2.3,
8.6.2.4, 8.6.2.5 8.6.2.6 , , Array
[[Put]] (. 15.4.5.1).
, .
, , [[Get]] [[Put]]
,
[[HasProperty]] false.
, O -
ECMAScript, P - .
8.6.2.1 [[Get]](P)
http://javascript.ru/ecma[14.03.09 12:52:12]
[[Get]] O P,
:
1. O P - 4.
2. .
3. (2).
4. [[Prototype]] O null - undefined.
5. [[Get]] [[Prototype]], P.
6. (5).
8.6.2.2 [[Put]](P, V)
[[Get]] O P V ,
:
1. [[CanPut]] O , P.
2. (1) false - .
3. O P - 6.
4. V . .
5. .
6. P, V
.
7. .
, , O - Array, [[Put]]
(15.4.5.1).
8.6.2.3 [[CanPut]](P)
[[CanPut]] [[Put]].
[[CanPut]] O P,
:
1. O P - 4.
2. ReadOnly - false.
3. true.
4. [[Prototype]] O null - true.
5. [[CanPut]] [[Prototype]] O , P.
http://javascript.ru/ecma[14.03.09 12:52:12]
6. (5).
8.6.2.4 [[HasProperty]](P)
[[HasProperty]] O P,
:
1. O P - true.
2. [[Prototype]] O null - false.
3. [[HasProperty]] [[Prototype]], P.
4. (3).
8.6.2.5 [[Delete]](P)
[[Delete]] O P,
:
1. O P - true.
2. DontDelete - false.
3. P O .
4. true.
8.6.2.6 [[DefaultValue]]()
[[DefaultValue]]
:
String,
1. [[Get]] O , "toString".
2. (1) - 5.
3. [[Call]] (1), O this
.
4. (3) - (3).
5. [[Get]] O , "valueOf".
6. (5) - 9.
7. [[Call]] (5), O this
.
8. (7) - (7).
9. TypeError.
[[DefaultValue]] O
:
http://javascript.ru/ecma[14.03.09 12:52:12]
Number,
1. [[Get]] O , "valueOf" .
2. (1) - 5.
3. [[Call]] (1), O this
.
4. (3) - (3).
5. [[Get]] O , "toString" .
6. (5) - 9.
7. [[Call]] (5), O this
.
8. (7) - (7).
9. TypeError.
[[DefaultValue]] O , ,
Number, , O Date (. 15.9), ,
String.
[[DefaultValue]]
.
[[DefaultValue]], , [[DefaultValue]]
.
8.7 Reference
Reference ("") .
.
ECMAScript ,
. Reference
.
Reference delete,
typeof .
. ,
, :
.
. ECMAScript,
, ,
.
(
,
, .)
Reference this
http://javascript.ru/ecma[14.03.09 12:52:12]
.
Reference . Reference
, .
:
(V). V.
(V). V.
:
8.7.1 (V)
1. ( V ) Reference - V .
2. ( V ).
3. (2) null - ReferenceError.
4. [[Get]] (2), ( V )
.
5. (4).
8.7.2 (V, W)
1. ( V ) Reference - ReferenceError.
2. ( V ).
3. (2) null - 6.
4. [[Put]] (2), ( V )
W .
5. .
6. [[Put]] , ( V )
W .
7. .
8.8 List
List ("") .
. ECMAScript
, List
. List
.
http://javascript.ru/ecma[14.03.09 12:52:12]
List (. 11.2.4),
new . List
.
.
8.9 Completion
Completion ("") .
.
ECMAScript ,
Completion .
Completion
.
Completion ( break, continue,
return throw)
. Completion (, ,
), - normal, break, continue, return throw, -
ECMAScript , - ECMAScript .
" " ,
normal.
9.
ECMAScript
. ,
. .
. ,
, Reference, List
Completion (.. ).
9.1 ToPrimitive
ToPrimitive (" ")
. ToPrimitive , Object.
,
, .
:
Undefined
Null
(
).
(
).
(
http://javascript.ru/ecma[14.03.09 12:52:12]
Boolean
Number
String
Object
9.2 ToBoolean
).
(
).
(
).
.
[[DefaultValue]]
. [[DefaultValue]]
ECMAScript (8.6.2.6).
Undefined false
Null
false
(
Boolean
).
false, +0, -0 NaN,
Number
true.
false, (
String
), true.
Object
true
9.3 ToNumber
ToNumber (" ") Number
:
Undefined NaN
Null
+0
1, true. +0,
Boolean
false.
(
Number
).
String
. .
:
Object
1. ToPrimitive( , Number).
2. ToNumber((1)).
3. (2).
http://javascript.ru/ecma[14.03.09 12:52:12]
:::
:::
:::
<TAB>
<SP>
<NBSP>
<FF>
<VT>
<CR>
<LF>
<LS>
<PS>
<USP>
:::
:::
+
-
:::
Infinity
.
.
:::
:::
0 1 2 3 4 5 6 7 8 9
:::
:::
http://javascript.ru/ecma[14.03.09 12:52:12]
e E
:::
+
-
:::
0x
0X
:::
0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
(. 7.8.3):
/
.
0.
+ -,
.
+0.
(. 7.8.3),
,
Number . :
() ,
:
::: [] 0.
::: 0.
:::
,
.
:::
.
:::
.
:::
.
::: +
.
::: -
, . (,
0,
0.
+0 -0
http://javascript.ru/ecma[14.03.09 12:52:12]
.)
::: Infinity ("")
10 10000 (.. , + ).
::: .
. ::: .
(
, 10 -n ), n -
.
::: .
10 e , e
.
::: .
(
, 10 -n )), 10 e , n -
e .
::: .
10 -n , n
.
::: .
10 e-n , n
, e .
:::
.
:::
10 e , e
.
::: .
::: (
10) .
:::
.
::: .
::: + .
::: -
.
::: 0 ::: 0 0.
::: 1 ::: 1 1.
::: 2 ::: 2 2.
::: 3 ::: 3 3.
::: 4 ::: 4 4.
::: 5 ::: 5 5.
::: 6 ::: 6 6.
::: 7 ::: 7 7.
::: 8 ::: 8 8.
::: 9 ::: 9 9.
::: a ::: A 10.
::: b ::: B 11.
::: c ::: C 12.
::: d ::: D 13.
::: e ::: E 14.
http://javascript.ru/ecma[14.03.09 12:52:12]
0,
,
.
9.4 ToInteger
ToInteger (" ") .
:
1. ToNumber .
2. (1) NaN - +0.
3. (1) +0, -0, + - - (1).
4. sign((1)) * floor(abs((1))).
5. (4).
9.5 ToInt32: ( 32- )
ToInt32 2 32
-2 31 2 31 -1 . :
1. ToNumber .
2. (1) NaN, +0, -0, + - - +0.
3. sign((1)) * floor(abs((1))).
http://javascript.ru/ecma[14.03.09 12:52:12]
4. (3) modulo 2 32 , .. k
Number 2 32 ,
(3) k 2 32 .
5. (4) 2 31 - (4)-2 32 ,
(4).
ToInt32:
ToInt32 :
, .
ToInt32(ToUint32(x)) ToInt32(x) x. (
+ - +0.)
ToInt32 -0 +0.
9.6 ToUint32: ( 32- )
ToInt32 2 32
0 2 32 -1 . :
1. ToNumber .
2. (1) NaN, +0, -0, + - - +0.
3. sign((1)) * floor(abs((1))).
4. (3) modulo 2 32 , .. k
Number 2 32 ,
(3) k 2 32 .
5. (4).
ToUInt32:
5 ToUint32 ToInt32.
ToUint32 :
, .
ToUint32(ToInt32(x)) ToUint32(x) x. (
+ - +0.)
ToUint32 -0 +0.
9.7 ToUint16: ( 16- )
ToUint16 2 16
16
http://javascript.ru/ecma[14.03.09 12:52:12]
0 2
-1 . :
1. ToNumber .
2. (1) NaN, +0, -0, + - - +0.
3. sign((1)) * floor(abs((1))).
4. (3) modulo 2 16 , .. k
Number 2 16 ,
(3) k 2 16 .
5. (4).
ToUint16:
2 32 2 16 4 ToUint32
ToUint16.
ToUint16 -0 +0.
9.8 ToString
ToString (" ") String
:
Undefined
Null
"undefined"
"null"
true, "true".
false, "false".
Number
. .
String
( )
:
1. ToPrimitive( , String).
Object
2. ToString((1)).
3. (2).
9.8.1 ToString Number
Boolean
ToString m :
1. m NaN - "NaN".
2. m +0 -0 - "0".
3. m - "-" ToString( -m).
4. m - "Infinity".
5. , n, k s - , k >= 1, 10 k-1 <= s <10k,
http://javascript.ru/ecma[14.03.09 12:52:12]
s * 1 0n -k m k .
, k s , s
10 s
.
6. k <= n <= 21 - , k
s ( , ), n k
'0'.
7. 0 < n <= 21 - , n
s , '. ' k - n
s .
8. -6 <n <= 0 - , '0',
'. ', -n '0' k s .
9. , k = 1 - s ,
'e', '+' '-' ( , n-1
), abs( n-1) (
).
10. , s,
'. ', k-1
s, 'e', '+'
'-' ( , n-1 ),
abs(n-1) ( ).
,
:
x - , -0, ToNumber(ToString(x))
x.
s 5.
, ,
, 5:
, n, k s - , k >= 1, 10 k-1 <= s <10k,
s * 10 n-k m k .
s - , s
* 10 n-k m. s . , k
s s 10 .
ECMAScript .
:
Gay, David M. Correctly Rounded Binary-Decimal and Decimal-Binary Conversions.
Numerical Analysis Manuscript 90-10. AT&T Bell Laboratories (Murray Hill, New Jersey).
November 30, 1990. http://cm.bell-labs.com/cm/cs/doc/90/4-10.ps.gz.
http://javascript.ru/ecma[14.03.09 12:52:12]
http://cm.belllabs.com/netlib/fp/dtoa.c.gz http://cm.bell-labs.com/netlib/fp/g_fmt.c.gz ,
- netlib.
9.9 ToObject
ToObject (" ") Object
:
Undefined TypeError.
Null
TypeError.
Boolean [[value]]
Boolean
. Boolean . 15.6.
Number [[value]]
Number
. Number . 15.7.
String [[value]]
String
. String . 15.7.
(
Object
).
10
ECMAScript,
. .
.
10.1
10.1.1 Function
Function:
Function .
, parseInt
Math.exp.
, .
, ECMAScript,
.
10.1.2
ECMAScript:
http://javascript.ru/ecma[14.03.09 12:52:12]
- ,
ECMAScript.
, .
Eval- - , eval . ,
eval ,
ECMAScript. Eval- eval
, .
- , .
, .
, Function ,
. , ,
Function ,
. Function ,
.
,
.
Function ,
.
10.1.3 ()
.
, ,
.
.
- ,
.
:
: ,
, ,
.
[[Call]].
,
, undefined.
, ,
,
, .
,
undefined.
,
,
,
Function, 13, .
,
.
.
http://javascript.ru/ecma[14.03.09 12:52:12]
In
, ,
In,
undefined .
,
.
. ,
,
.
10.1.4
. - ,
.
,
, .
with (. 12.10) catch (. 12.14).
: :
1. . ,
5.
2. [[HasProperty]] (1),
.
3. (2) true, Reference,
(1), - .
4. 1.
5. Reference, null ,
- .
Reference, .
10.1.5
(. 15.1),
, - .
:
, Math, String, Date, parseInt ..
{ DontEnum }.
, .
, . ,
HTML window
.
http://javascript.ru/ecma[14.03.09 12:52:12]
,
ECMAScript .
10.1.6
, ,
, .
arguments { DontDelete }.
.
.
,
. ECMAScript
. ,
. Reference,
, this
null .
10.1.7 This
this. this
, . this,
, .
10.1.8
,
, :
[[Prototype]]
- Object, .. ,
Object.prototype (. 15.2.3.1).
callee { DontEnum }.
- Function,
. .
length { DontEnum }.
,
.
arg , length
ToString( arg ) { DontEnum }.
,
. arg = 0,
- arg = 1 . , arg
Function,
. ,
.
10.2
http://javascript.ru/ecma[14.03.09 12:52:12]
,
. (return)
. , ,
.
,
,
this.
,
this , .
10.2.1
,
.
, { DontDelete }.
this .
10.2.2 Eval-
eval-,
, this
, .
, ,
this ,
.
, .
,
with catch .
.
this this .
10.2.3
,
,
[[Scope]] Function.
{ DontDelete }.
this . this,
, (, null - ),
this .
http://javascript.ru/ecma[14.03.09 12:52:12]
11
11.1
:
this
( )
11.1.1 this
this this .
11.1.2
,
10.1.4.
Reference.
11.1.3
7.8.
11.1.4
,
Array, .
,
. .
, .
, .
,
(. .
), Array
:
[ ]
[ ]
[ ,
:
,
http://javascript.ru/ecma[14.03.09 12:52:12]
:
,
,
: [ ]
:
1. , new Array().
2. ( ,
).
3. [[Put]] (1) "length" (2).
4. (1).
: [ ]
:
1. .
2. (1).
: [ , ]
:
1. .
2. ( ,
).
3. [[Get]] (1) "length".
4.
(3)).
5. (1).
1. , new Array().
2. ( ,
).
3. .
4. ((3)).
5. [[Put]] (1) (2) (4).
http://javascript.ru/ecma[14.03.09 12:52:12]
6. (1)
1. .
2. ( ,
).
3. .
4. ((3)).
5. [[Get]] (1) "length".
6. [[Put]] (1) ((2)+ (5))
(4).
7. (1)
: , :
1. 1.
: , :
1. .
2. ((1)+ 1).
11.1.5
,
Object, .
. -
, .
{}
{ }
:
:
, :
:
http://javascript.ru/ecma[14.03.09 12:52:12]
: {} :
1. , new Object().
2. (1).
: { }
:
1. .
2. (1).
1. , new Object().
2. .
3. .
4. ((3)).
5. [[Put]] (1) (2) (4).
6. (1).
: ,
: :
1. .
2. .
3. .
4. ((3)).
5. [[Put]] (1) (2) (4).
6. (1).
: :
1. , ,
.
2. (1).
:
:
http://javascript.ru/ecma[14.03.09 12:52:12]
1. .
:
:
1. .
2. ToString((1)).
11.1.6
: ( )
:
1. . Reference.
2. (1).
(1).
delete typeof .
11.2
[ ]
.
new
New :
new New
Call :
Call
Call [ ]
Call .
:
()
( )
,
:
http://javascript.ru/ecma[14.03.09 12:52:12]
New
Call
11.2.1
:
.
Call .
:
[
Call [ ]
<->
Call
Call [ <-> ]
<->
,
, .
:
1. .
2. ((1)).
3. .
4. ((3)).
5. ToObject((2)).
6. ToString((4)).
7. Reference, (5),
- (6).
Call : Call [ ]
, 1
Call.
http://javascript.ru/ecma[14.03.09 12:52:12]
11.2.2 new
New : new New
:
1. New.
2. ((1)).
3. ((2)) Object, TypeError.
4. (2) [[Construct]],
TypeError.
5. [[Construct]] (2), (..
).
6. (5).
:
new
1. .
2. ((1)).
3. , (.
11.2.4).
4. ((2)) Object, TypeError.
5. (2) [[Construct]],
TypeError.
6. [[Construct]] (2), Result(3)
.
7. (6).
11.2.3
Call :
:
1. .
2. , (.
11.2.4).
3. ((1)).
4. ((3)) Object - TypeError.
5. (3) [[Call]] -
http://javascript.ru/ecma[14.03.09 12:52:12]
TypeError.
6. ((1)) - Reference, (6) ((1)).
(6) null.
7. (6) , (7) null.
(7) (6).
8. [[Call]] (3), Result(7) this
Result(2) .
9. (8).
Call : Call
, 1
Call.
http://javascript.ru/ecma[14.03.09 12:52:12]
3. ((2)).
4. , , (1),
(1), (3)
.
11.2.5
:
1. .
2. (1).
11.3
[ ]
[ ]
++
--
11.3.1
: [
] ++ :
1. .
2. ((1)).
3. ToNumber((2)).
4. 1 (3) , +
(. 11.6.3).
5. ((1), (4)).
6. (3).
11.3.2
: [
] -- :
1. .
2. ((1)).
3. ToNumber((2)).
http://javascript.ru/ecma[14.03.09 12:52:12]
4. 1 (3) , (. 11.6.3).
5. ((1), (4)).
6. (3).
11.4
delete
void
typeof
++
--
+
-
~
!
11.4.1 delete
: delete
:
1. .
2. ((1)) Reference - true.
3. ((1)).
4. ((1)).
5. [[Delete]] (3), (4)
, .
6. (5).
11.4.2 void
: void
:
1. .
2. ((1)).
3. undefined.
11.4.3 typeof
http://javascript.ru/ecma[14.03.09 12:52:12]
: typeof
:
1. .
2. ((1)) Reference - 4.
3. ((1)) null - "undefined".
4. ((1)).
5. , ((4)) :
Undefined
"undefined"
Null
"object"
Boolean
"boolean"
Number
"number"
String
"string"
Object ( [[Call]]) "object"
Object ( [[Call]])
"function"
Object ( )
11.4.4
: ++
:
1. .
2. ((1)).
3. ToNumber((2)).
4. 1 (3) , +
(. 11.6.3).
5. ((1), (4)).
6. (4).
11.4.5
: --
:
1. .
2. ((1)).
3. ToNumber((2)).
4. 1 (3), , http://javascript.ru/ecma[14.03.09 12:52:12]
(. 11.6.3).
5. ((1), (4)).
6. (4).
11.4.6 +
+ Number.
: +
:
1. .
2. ((1)).
3. ToNumber((2)).
4. (3).
11.4.7 - Number
. , +0 -0, -0
+0.
: :
1. .
2. ((1)).
3. ToNumber((2)).
4. (3) NaN - NaN.
5. (3), .. ,
.
6. (5).
11.4.8 ( ~ )
: ~
:
1. .
2. ((1)).
3. ToInt32((2)).
4. (3). 32http://javascript.ru/ecma[14.03.09 12:52:12]
.
5. (4).
11.4.9 ( ! )
: !
:
1. .
2. ((1)).
3. ToBoolean((2)).
4. (3) true - false.
5. true.
11.5
*
/
%
: @
, @
, :
1. .
2. ((1)).
3. .
4. ((3)).
5. ToNumber((2)).
6. ToNumber((4)).
7. (*, /, %) (5) (6). .
( 11.5.1, 11.5.2, 11.5.3).
8. (7).
11.5.1 *
http://javascript.ru/ecma[14.03.09 12:52:12]
* , .
. ECMAScript
.
IEEE 754:
NaN, NaN.
, , ,
.
NaN.
.
.
. .
, ,
NaN,
IEEE "--".
,
.
, .
ECMAScript " "
IEEE 754.
11.5.2 /
/ , .
, - . ECMAScript
.
.
IEEE 754:
NaN, NaN.
, , ,
.
NaN.
.
.
. .
.
.
NaN,
, .
.
.
, ,
, NaN,
IEEE "--".
,
.
, (
http://javascript.ru/ecma[14.03.09 12:52:12]
) . ECMAScript
" " IEEE 754.
11.5.3 %
% .
, - .
C C++ .
ECMAScript .
% "", IEEE 754.
"" IEEE 754 , ,
, ,
. ECMAScript %
,
Java. fmod
C.
ECMAScript
IEEE:
NaN, NaN.
.
/ ,
NaN.
, - .
, - .
, ,
, NaN, r n d
r = n (d *q), q
, , n/d ,
n/ d , ,
n d.
11.6
+
-
11.6.1 ( + )
, .
:
1. .
http://javascript.ru/ecma[14.03.09 12:52:12]
2. ((1)).
3. .
4. ((3)).
5. ToPrimitive((2)).
6. ToPrimitive((4)).
7. ((5)) String ((6)) String -
12. (, 3
, .)
8. ToNumber((5)).
9. ToNumber((6)).
10. (8) (9). .
( 11.6.3).
11. (10).
12. ToString((5)).
13. ToString((6)).
14. (12) (13).
15. (14).
ToPrimitive 5 6 -.
ECMAScript Date ,
Number. Date
, String.
- .
11.6.2 ( - )
:
1. .
2. ((1)).
3. .
4. ((3)).
5. ToNumber((2)).
6. ToNumber((4)).
http://javascript.ru/ecma[14.03.09 12:52:12]
7. (5) (6). .
( 11.6.3).
8. (7).
11.6.3 ( +,- ) Number
+, ,
. -
.
- , .
IEEE 754:
NaN, NaN.
NaN.
.
.
-0.
+0.
.
+0.
, ,
, NaN , ,
IEEE "--".
,
. ECMAScript
" " IEEE 754.
+ ,
. , . a b a- b a+(- b)
.
11.7
<<
>>
>>>
11.7.1 ( << )
,
, .
http://javascript.ru/ecma[14.03.09 12:52:12]
: <<
:
1. .
2. ((1)).
3. .
4. ((3)).
5. ToInt32((2)).
6. ToUint32((4)).
7. (6) 5 , .. (6) & 0x1F.
8. (5) (7) . 32-
.
9. (8).
11.7.2 ( >> )
, , .
: >>
:
1. .
2. ((1)).
3. .
4. ((3)).
5. ToInt32((2)).
6. ToUint32((4)).
7. (6) 5 , .. (6) & 0x1F.
8. (5) (7) .
"" . 32 .
9. (8).
11.7.3 ( >> )
, , .
http://javascript.ru/ecma[14.03.09 12:52:12]
: >>>
:
1. .
2. ((1)).
3. .
4. ((3)).
5. ToUint32((2)).
6. ToUint32((4)).
7. (6) 5 , .. (6) & 0x1F.
8. (5) (7) . ""
. 32-
.
9. (8).
11.8
<
>
<=
>=
instanceof
in
In :
In
In
In
In
In
<
>
<=
>=
instanceof
'In'
in for .
in
Boolean
,
http://javascript.ru/ecma[14.03.09 12:52:12]
In ,
,
In .
11.8.1 - ( < )
: <
:
1. .
2. ((1)).
3. .
4. ((3)).
5. (2) < (4) (. 11.8.5).
6. (5) undefined - false. (5).
11.8.2 - ( > )
: >
:
1. .
2. ((1)).
3. .
4. ((3)).
5. (4) < (2) (. 11.8.5).
6. (5) undefined - false. (5).
11.8.3 ( <= )
1. .
2. ((1)).
3. .
4. ((3)).
5. (4) < (2) (. 11.8.5).
6. (5) true undefined - false. true.
http://javascript.ru/ecma[14.03.09 12:52:12]
<=
11.8.4 -- ( >= )
>=
1. .
2. ((1)).
3. .
4. ((3)).
5. (2) < (4) (. 11.8.5).
6. (5) true undefined - false. true.
11.8.5
x < y , x y , true, false undefined
( , NaN).
:
1. ToPrimitive( x, Number).
2. ToPrimitive( y , Number).
3. ((1)) String ((2)) String -
16. (, 7 +
, .)
4. ToNumber((1)).
5. ToNumber((2)).
6. (4) NaN - undefined.
7. (5) NaN - undefined.
8. (4) (5) false.
9. (4) +0 (5) -0 - false.
10. (4) -0 (5) +0 - false.
11. (4) +, false.
12. (5) +, true.
13. (5) -, false.
14. (4) -, true.
15. (4) ,
http://javascript.ru/ecma[14.03.09 12:52:12]
.
,
, .
, ,
, ECMAScript. ,
, .
11.8.6 instanceof
instanceof
1. .
2. ((1)).
3. .
4. ((3)).
5. (4) , TypeError.
6. (4) [[HasInstance]],
TypeError.
7. [[HasInstance]] (4) (2).
8. (7).
11.8.7 in
http://javascript.ru/ecma[14.03.09 12:52:12]
in
1. .
2. ((1)).
3. .
4. ((3)).
5. (4) , TypeError.
6. ToString((2)).
7. [[HasProperty]] (4) (6).
8. (7).
11.9
==
!=
===
!==
In :
In
In == In
In != In
In === In
In !== In
Boolean
,
.
In ,
,
In In
.
11.9.1 ( == )
:
http://javascript.ru/ecma[14.03.09 12:52:12]
==
1. .
2. ((1)).
3. .
4. ((3)).
5. (4) == (2) (. 11.9.3).
6. (5).
11.9.2 - ( != )
!=
1. .
2. ((1)).
3. .
4. ((3)).
5. (4) == (2) (. 11.9.3).
6. (5) true - false. true.
11.9.3
x == y , x y , true false.
:
1. ( x) ( y ) - 14.
2. ( x) Undefined - true.
3. ( x) Null - true.
4. ( x) Number - 11.
5. x NaN - false.
6. y NaN - false.
7. x , y , - true.
8. x +0, y -0, true.
9. 8. x -0, y +0, true.
10. false.
11. ( x) String - true, x y
http://javascript.ru/ecma[14.03.09 12:52:12]
(
). false.
12. ( x) Boolean, true, x y true
false. false.
13. true, x y
, (. 13.1.2). false.
14. x null, y undefined - true.
15. x undefined, y null - true.
16. ( x) Number, ( y ) String, x ==
ToNumber( y ).
17. ( x) String, ( y ) Number,
ToNumber( x)== y .
18. ( x) Boolean, ToNumber( x)== y .
19. ( y ) Boolean, x == ToNumber( y ).
20. ( x) - String Number, ( y ) - Object, x ==
ToPrimitive( y ).
21. ( x) - Object, ( y ) - String Number,
ToPrimitive( x)== y .
22. false.
:
:
""+a ==""+ b.
a -0 ==b -0.
!a == !b.
:
A != B
!(A == B).
A == B
B == A
B.
. ,
String, ;
String
==, String .
. ,
http://javascript.ru/ecma[14.03.09 12:52:12]
, 2.0. ,
, ,
ECMAScript. , ,
.
11.9.4 ( === )
===
1. .
2. ((1)).
3. .
4. ((3)).
5. (4) === (2) (. .)
6. (5).
11.9.5 ( !== )
!==
1. .
2. ((1)).
3. .
4. ((3)).
5. (4) === (2) (. .)
6. (5) true - false. true.
11.9.6
x === y , x y , true false.
:
1. ( x) ( y ), false.
2. ( x) Undefined - true.
3. ( x) Null - true.
4. ( x) Number - 11.
5. x NaN - false.
6. y NaN - false.
http://javascript.ru/ecma[14.03.09 12:52:12]
7. x , y , - true.
8. x +0, y -0 - true.
9. x -0, y +0 - true.
10. false.
11. ( x) String - true, x y
(
). false.
12. ( x) Boolean, true, x y true
false. false.
13. true, x y
, (. 13.1.2). false.
11.10
&
In :
In
In
&
In
In :
In
In
In
|
In :
In
In | In
A : A @B, @ -
, :
1. A .
http://javascript.ru/ecma[14.03.09 12:52:12]
2. ((1)).
3. B .
4. ((3)).
5. ToInt32((2)).
6. ToInt32((4)).
7. @ (5) (6).
32- .
8. (7).
11.11
&&
In :
In
In && In
:
||
In :
In
In
||
In
:
1. .
2. ((1)).
3. ToBoolean((2)).
4. (3) false - (2).
5. .
6. ((5)).
7. (6).
http://javascript.ru/ecma[14.03.09 12:52:12]
&&
:
:
||
1. .
2. ((1)).
3. ToBoolean((2)).
4. (3) true - (2).
5. .
6. ((5)).
7. (6).
In In
,
In,
In
In
, .
In :
In
In ? :
In
: :
1. .
2. ((1)).
3. ToBoolean((2)).
4. (3) false - 8.
http://javascript.ru/ecma[14.03.09 12:52:12]
5. .
6. ((5)).
7. (6).
8. .
9. ((8)).
10. (9).
In ,
,
In,
,
In
ECMAScript
C Java, , ,
.
ECMAScript,
,
.
11.13
In :
In
In
:
In ,
,
In In
.
11.13.1 ( = )
:
http://javascript.ru/ecma[14.03.09 12:52:12]
1. .
2. .
3. ((2)).
4. ((1), (3)).
5. (3).
11.13.2 ( = )
: @ =
, @ ,
:
1. .
2. ((1)).
3. .
4. ((3)).
5. @ (2) (4).
6. ((1), (5)).
7. (5).
11.14 - ( , )
,
In :
In
In , In
: ,
:
1. .
2. ((1)).
3. .
4. ((3)).
http://javascript.ru/ecma[14.03.09 12:52:12]
5. (4).
In ,
, In
In
.
12
If
Continue
Break
Return
With
Switch
Throw
Try
,
, .
" ".
.
Switch .
.
12.1
http://javascript.ru/ecma[14.03.09 12:52:12]
: {} :
1. (normal, empty, empty).
: { } :
1. .
2. (1).
:
:
1. .
2. , (throw, V , empty), V - . (
, .)
3. (1).
:
:
1. .
2. (1) , (1).
3. .
4. , (throw, V , empty), V - . (
, .)
5. (3). empty, V = (1). ,
V = (3). .
6. ((3). , V , (3). ).
12.2
:
var
:
In :
In
In
:
http://javascript.ru/ecma[14.03.09 12:52:12]
In
In :
In
:
=
In :
= In
,
10.1.3.
(..
10.1.3) { DontDelete }. ,
. .
.
undefined. ,
,
.
: var ;
:
1. .
2. (normal, empty, empty).
1. .
: ,
:
1. .
2. .
:
1. , ,
.
http://javascript.ru/ecma[14.03.09 12:52:12]
:
1. 11.1.2.
2. .
3. ((2)).
4. ((1), (3)).
5. , ,
.
: =
:
1. .
2. (1).
In,
In In ,
,
, In,
In, In In
,
, .
12.3
:
;
: ; :
1. (normal, empty, empty).
12.4 -
:
[ { {,
function }]
, ,
.. .
function , ..
.
http://javascript.ru/ecma[14.03.09 12:52:12]
: [
:
{{, function}] ;
1. .
2. ((1)).
3. (normal, (2), empty).
12.5 if
If :
if (
if (
)
)
else
else , if
, if,
else.
If : if ( ) else
:
1. .
2. ((1)).
3. ToBoolean((2)).
4. (3) false - 7.
5. .
6. (5).
.
8. (7).
If : if ( )
:
1. .
2. ((1)).
3. ToBoolean((2)).
4. (3) false - (normal, empty, empty).
5. .
http://javascript.ru/ecma[14.03.09 12:52:12]
6. (5).
12.6
(
) (
).
:
do while ( );
while ( )
for ( In ; ; )
for (var In; ;
for ( in )
for (var In in )
12.6.1 do-while
do while ( );
:
1. V = empty.
2. .
3. (2). empty, V = (2). .
4. (2). continue (2).
- 7.
5. (2). break (2).
- (normal, V , empty).
6. (2) , (2).
7. .
8. ((7)).
9. ToBoolean((8)).
10. (9) true - 2.
11. (normal, V , empty);
12.6.2 while
:
http://javascript.ru/ecma[14.03.09 12:52:12]
while
1. V = empty.
2. .
3. ((2)).
4. ToBoolean((3)).
4. (4) false - (normal, V , empty).
6. .
7. (6). empty, V = (6). .
8. (6). continue (6).
- 2.
9. (6). break (6).
- (normal, V , empty).
10. 2. (6) , (6).
11. 2.
12.6.3 for
: for ( In ; ;
) :
1. In - 4.
2. In .
3. ((2)). ( .)
4. V = empty.
5. - 10.
6. .
7. ((6)).
8. ToBoolean((7)).
9. (8) false - 19.
10. .
11. (10). empty, V = (10).
.
12. (10). break (10).
- 19.
http://javascript.ru/ecma[14.03.09 12:52:12]
18. 5.
19. (normal, V , empty).
:
for
(var
In ; ; )
:
1. In.
2. V = empty.
3. - 8.
4. .
5. ((4)).
6. ToBoolean((5)).
7. (6) false - 17.
8. .
9. (8). empty, V = (8). .
10. (8). break (8).
- 17.
11. (8). continue (8).
- 13.
12. (8) , (8).
13. - 3.
14. .
15. ((14)).
.)
16. 3.
http://javascript.ru/ecma[14.03.09 12:52:12]
in
1. .
2. ((1)).
3. ToObject((2)).
4. V = empty.
5. (3),
DontEnum. - 14.
6. (
).
7. ((6), (5)).
8. .
9. (8). empty, V = (8). .
10. (8). break (8).
- 14.
11. (8). continue (8).
- 5.
12. (8) , (8).
13. 5.
14. (normal, V , empty).
: for (var In in
) :
1. In .
2. .
3. ((2)).
4. ToObject((3)).
5. V = empty.
6. (4),
DontEnum. - 15.
http://javascript.ru/ecma[14.03.09 12:52:12]
7. (1) , . 0 (,
).
8. ((7), (6)).
9. .
10. (9). empty, V = (9). .
11. (9). break (9).
- 15.
12. (9). continue (9).
- 6.
13. (8) , (8).
14. 6.
15. (normal, V, empty).
() ( 5 , 6 )
. .
. ,
, , .
,
.
,
. , ""
- ,
.
12.7 continue
Continue :
continue [ ]
,
:
continue ,
( )
.
continue ,
, (
) continue .
Continue :
http://javascript.ru/ecma[14.03.09 12:52:12]
1. (continue, empty, ).
12.8 break
Break :
break [ ]
,
:
break ,
( )
Switch.
continue ,
, (
) break .
Break :
1. (break, empty, empty).
Break :
1. (break, empty, ).
12.9 return
Return :
return [ ]
, return
. return
. ,
undefined. .
Return : return [ ]
; :
1. - (return, undefined, empty).
http://javascript.ru/ecma[14.03.09 12:52:12]
2. .
3. ((2)).
4. (return, (3), empty).
12.10 with
With :
with (
with
,
.
With : with ( )
:
1. .
2. ((1)).
3. ToObject((2)).
4. (3) .
5.
4.
6. C = (5). 5 , C =
(throw, V , empty), V - . ( ,
.)
7. (3) .
8. C .
'': ,
-
.
12.11 switch
Switch :
switch (
http://javascript.ru/ecma[14.03.09 12:52:12]
Case
Case :
{ Case }
{ Case Case
Case :
Case
Case Case
Case :
case
:
default :
1. V = empty.
2. A - Case Case
.
3. C - Case A . Case -
11.
4. C .
5. input (4) ( !== ) -
3.
6. C - 20.
7. C , R .
8. R - , R .
9. V = R ..
10. 20.
11. B - Case Case
.
12. C - Case B . Case -
26.
13. C .
14. input (13) ( !== ) -
12.
15. C - 31.
16. C , R .
17. R - , R .
18. V = R ..
19. 31.
20. C - Case A . Case -
26.
21. C - 20.
22. C , R .
23. R . , V = R ..
24. R - , ( R ., V , R .).
25. 20.
26. - 30.
27. , R .
28. R . , V = R ..
29. R - , ( R ., V , R .).
30. B Case Case
.
31. C - Case B . Case -
37.
32. C - 31.
33. C , R .
34. R . , V = R ..
35. R - , ( R ., V , R .).
36. 31.
37. (normal, V , empty).
http://javascript.ru/ecma[14.03.09 12:52:12]
Case : case :
:
1. .
2. ((1)).
3. (2).
Case
. ,
Case ,
.
12.12
:
:
.
break continue ,
. ECMAScript goto .
ECMAScript ,
,
. ,
, .
:
.
,
.
(break, V, L ), L ,
(normal, V , empty).
,
, ,
Switch .
, .
12.13 throw
Throw :
throw [ ] ;
http://javascript.ru/ecma[14.03.09 12:52:12]
Throw : throw [ ] ;
:
1. .
2. ((1)).
3. (throw, (2), empty).
12.14 try
Try :
try Catch
try Finally
try Catch Finally
Catch :
catch ( )
Finally :
finally
try ,
,
throw . catch . catch
, .
http://javascript.ru/ecma[14.03.09 12:52:12]
13
:
function
:
http://javascript.ru/ecma[14.03.09 12:52:12]
){
function
){
:
function
){ }
:
1. Function 13.2,
.
.
2. (
10.1.3) (1).
: function (
){ } :
1. Function 13.2,
.
.
2. (1).
:
function
){ }
1. , new Object() .
2. (1) .
3. Function 13.2,
.
.
4. (1). ,
(3), - { DontDelete, ReadOnly }.
5. (1) .
6. (3).
,
, .
http://javascript.ru/ecma[14.03.09 12:52:12]
, ,
.
:
1. .
2. .
3. (2).
13.1
:
13.1.1
:
ECMAScript.
10.1.2.
, eval (15.1.2.1).
eval-
10.1.2.
, Function
(. 15.3.1 15.3.2), . ,
FunctionBody, eval ,
, eval
.
13.1.2
Function ,
:
, -
O ,
, O .
, - O ,
, O .
O P , == ===
.
, O P
P Q , O Q
.
http://javascript.ru/ecma[14.03.09 12:52:12]
, ,
.
,
- [[Scope]] .
. ,
Function.
, ,
[[Scope]] Function
,
Function .
,
ECMAScript.
13.2 Function
, , ,
, , Function
:
1. E,
, ,
, , - 13. (
E, -
.)
2. ECMAScript, F.
3. [[Class]] F "Function".
4. [[Prototype]] F Function
15.3.3.1.
5. [[Call]] F 13.2.1.
6. [[Construct]] F 13.2.2.
7. [[Scope]] F
( 10.1.4), , .
8. length F ,
. ,
length F 0.
15.3.5.1.
9. , new Object().
10. constructor (9) F.
{ DontEnum }.
http://javascript.ru/ecma[14.03.09 12:52:12]
prototype
.
1 A,
B.
B,
A. 13 ; ,
, 2 .
,
function A() {
function B(x) {return x* x;}
return B;
}
function C() {
return eval("(function(x) {return x* x;})");
}
var b1 =
var b2 =
function
function
var b5 =
var b6 =
A();
A();
b3(x) {return x* x;}
b4(x) {return x* x;}
C();
C();
, , b1 b2. ,
b1 b2 ,
[[Scope]]. , b3 b4,
( 13.1.1).
b5 b6, eval ,
http://javascript.ru/ecma[14.03.09 12:52:12]
, .
Function
, ,
[[Scope]] ,
. ,
.
13.2.1 [[Call]]
[[Call]] F Function,
:
1. ,
F, this
10.2.3.
2. .
3. , 1,
.
4. (2). throw - (2). .
5. (2). return - (2). .
6. ((2). normal.) undefined.
13.2.2 [[Construct]]
[[Construct]] F Function,
:
1. ECMAScript.
2. [[Class]] (1) "Object".
3. prototype F.
4. (3) , [[Prototype]] (1)
(3).
5. (3) , [[Prototype]] (1)
Object 15.2.3.1.
6. [[Call]] F, (1) this
, [[Construct]],
.
7. ((6)) Object - (6).
8. (1).
http://javascript.ru/ecma[14.03.09 12:52:12]
14.
:
:
1. .
2. .
3. (2).
:
:
1. .
:
:
1. .
2. (1).
:
1. .
2. .
:
1. .
http://javascript.ru/ecma[14.03.09 12:52:12]
2. (1) , (1).
3. .
4. (3).
.
:
:
1. .
2. (1).
:
:
1. (. 13).
:
:
1. (normal, empty, empty).
ECMAScript
15 ECMAScript
ECMAScript ,
. , ,
.
.
, [[Class]]
"Function" , [[Call]], "Object" ,
[[Call]].
, ..
. , ..
, new .
Function.
-
, new , .
,
, , ,
, , ()
,
undefined value.
http://javascript.ru/ecma[14.03.09 12:52:12]
,
, , ,
, . ,
( )
TypeError.
,
, ,
.
[[Prototype]]
" Function",
Function.prototype (. 15.3.2.1).
[[Prototype]] - Object,
Object.prototype (. 15.3.2.1).
,
, ,
[[Construct]] . ,
, , prototype .
Function, (
, , ),
length . ,
(
), , .
, Function, slice
String,
"String.prototype.slice(start , end)", start
end. length Function 2.
length Function,
, { ReadOnly, DontDelete, DontEnum }
. { DontEnum }
, .
15.1
[[Construct]].
new .
[[Call]].
.
[[Prototype]] [[Class]]
.
15.1.1 -
http://javascript.ru/ecma[14.03.09 12:52:12]
15.1.1.1 NaN
NaN NaN (. 8.5).
{ DontEnum, DontDelete}.
15.1.1.2 Infinity
Infinity + (. 8.5).
{ DontEnum, DontDelete}.
15.1.1.3 undefined
undefined undefined (. 8.1).
{ DontEnum, DontDelete}.
15.1.2 -
15.1.2.1 eval(x)
eval x,
:
1. x , x.
2. x . ,
SyntaxError ( . 16).
3. 2.
4. (3). normal V -
V .
5. (3). normal empty -
undefined.
6. (3). throw. (3). .
eval (..
Call ),
- , eval - EvalError.
15.1.2.2 parseInt(string , radix)
parseInt ,
string
radix. .
radix undefined 0, 10, ,
0x 0X, . (radix)
16. 16
0x 0X.
parseInt , :
1. ToString( string ).
http://javascript.ru/ecma[14.03.09 12:52:12]
2. S (1), ,
, . ( ,
.)
3. sign 1.
4. S S -, sign
-1.
5. S S + -,
S.
6. R = ToInt32( radix).
7. R =0 - 11.
8. R <2 R > 36 - NaN.
9. R = 16 - 13.
10. 14.
11. R = 10.
12. S 1, S "0",
R = 8 R .
13. S 2, S "0x" "0X" -
S R = 16.
14. S ,
R , Z S,
, Z S.
15. Z , NaN.
16. , Z
R , A-Z a-z
10 35. ( R 10, Z 20 ,
( ) 20- 0.
R 2, 4, 8, 10, 16 32, (16)
, Z
R .)
17. (16).
18. sign * (17).
parseInt
; , ,
, .
http://javascript.ru/ecma[14.03.09 12:52:12]
radix 0 undefined, ,
0, x X,
, . ,
.
15.1.2.3 parseFloat(string)
parseFloat ,
string .
parseFloat , :
1. ToString( string ).
2. (1), ,
. ( ,
.)
3. (2), (2)
(. 0), NaN.
4. (2) (
(2)), .
5. (4).
parseInt
; , ,
, .
15.1.2.4 isNaN(number)
ToNumber true,
NaN, false .
15.1.2.5 isFinite(number)
ToNumber false,
NaN, + -, true .
15.1.3 - URI
(URI) ,
(, - )
(, HTTP FTP) . ECMAScript
URI,
, URI 15.1.3.1,
15.1.3.2, 15.1.3.3 15.1.3.4.
ECMAScript
-.
http://javascript.ru/ecma[14.03.09 12:52:12]
.
URI , .
:
Uri :::
Uri Uri
Uri :::
uri
uri
uri
uri :::
; / ? : @ & = + $ ,
uri :::
uri
uri
uri :::
%
uri :::
a b c d e f g h i j k l m n o p q r s t u v w x y z
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
uri :::
- _ . ! ~ * ' ( )
, URI,
,
, .
(8-
) UTF-8,
UCS-2 UCS-4. (,
[0,127] .)
http://javascript.ru/ecma[14.03.09 12:52:12]
,
escape- "% xx" ("").
Encode,
: string unescapedSet.
.
1. string .
2. R .
3. k 0.
4. k (1), R .
5. C - string , k .
6. C unescapedSet - 9.
7. S - , C .
8. 24.
9. C 0xDC00 0xDFFF ,
URIError.
10. C 0xDB00 0xDBFF ,
V C 16.
11. k 1.
12. k (1), URIError.
13. string , k .
14. (13) 0xDC00 0xDFFF ,
URIError.
15. V ((( C ) - 0xD800) * 0x400 + ((13) - 0xDC00) + 0x10000).
16. Octets ,
UTF-8 V , L .
17. j 0.
18. Octets j .
19. S , "% XY" , XY -
, (18).
20. R - ,
R S.
21. j 1.
http://javascript.ru/ecma[14.03.09 12:52:12]
22. j L - 25.
23. 18.
24. R - ,
R S.
25. k 1.
26. 4.
Decode,
: string reservedSet.
.
1. string .
2. R .
3. k 0.
4. k (1), R .
5. C - string , k .
6. C '% ', 40.
7. start k .
8. k + 2 (1), URIError.
9. string (k + 1) (k + 2)
, URIError.
10. B 8- ,
( k + 1) ( k + 2).
11. k 2.
12. B 0, C , B
37.
13. n - , (B << n) & 0x80 0.
14. n 1 n 4 - URIError.
15. Octets - 8- n.
16. B Octets 0.
17. k +(3 *(n - 1)) (1), URIError.
18. j 1.
http://javascript.ru/ecma[14.03.09 12:52:12]
19. j n - 29.
20. k 1.
21. k '%' - URIError.
22. string (k + 1) (k + 2)
, URIError.
23. B 8- ,
( k + 1) ( k + 2).
24. B 10, URIError.
25. k 2.
26. B Octets j.
27. j 1.
28. 19.
29. V , UTF-8
Octets (.. 32- ).
30. V 0x10000 - 36.
31. V 0x10FFFF - URIError.
32. L (((V - 0x10000) & 0x3FF) + 0xDC00).
33. H ((((V - 0x10000) >> 10) & 0x3FF) + 0xD800).
34. S - , H L.
35. 41.
36. C V .
37. C reservedSet - 40.
38. S string , start
k .
39. 41.
40. S - , C .
41. R - ,
R S.
42. k 1.
43. 4.
http://javascript.ru/ecma[14.03.09 12:52:12]
1
URI RFC2396 .
2
UTF-8 , 2.0,
A .
UTF-8 1 6 .
"" 0,
.
n , n > 1, n 1,
(n+1)- 0.
. 1,
0. 6 .
ECMAScript UTF-8 :
0x0000 - 0x007F
0x0080 - 0x07FF
0x0800 - 0xD7FF
0xD800 - 0xDBFF
0xDC00 - 0xDFFF
0xD800 -0xDBFF
0xDC00 - 0xDFFF
0xDC00 - 0xDFFF
0xE000 - 0xFFFF
1 2 3 4
0zzzzzzz
110yyyyy 10zzzzzz
1110xxxx 10yyyyyy 10zzzzzz
00000000 0zzzzzzz
00000yyy yyzzzzzz
xxxxyyyy yyzzzzzz
110110vv vvwwwwxx
11110uuu 10uuwwww 10xxyyyy 10zzzzzz
110111yy yyzzzzzz
URIError
URIError
xxxxyyyy yyzzzzzz
uuuuu
= vvvv +1
encodedURI,
1. ToString( encodedURI).
2. reservedURISet ,
, uriReserved , "#".
http://javascript.ru/ecma[14.03.09 12:52:12]
3. Decode((1), reservedURISet)
4. (3).
"#" escape- ,
URI.
15.1.3.2 decodeURIComponent(encodedURIComponent)
decodeURIComponent URI, escape UTF-8,
encodeURIComponent , ,
.
decodeURIComponentval
encodedURIComponent , :
1. ToString( encodedURIComponent ).
2. reservedURIComponentSet .
3. Decode((1), reservedURIComponentSet )
4. (3).
15.1.3.3 encodeURI(uri)
encodeURI URI,
, , escape,
UTF-8
encodeURI uri ,
:
1. ToString( uri ).
2. unescapedURISet ,
, uriReserved uriUnescaped , "#".
3. Encode(Result(1), unescapedURISet )
4. (3).
"#" escape-,
URI.
15.1.3.4 encodeURIComponent(uriComponent)
encodeURIComponent URI,
, escape-,
UTF-8
http://javascript.ru/ecma[14.03.09 12:52:12]
encodeURIComponent uriComponent,
:
1. ToString( uriComponent).
2. reservedURISet ,
, uriUnescaped .
3. Encode((1), unescapedURIComponentSet)
4. (3).
15.1.4 -
15.1.4.1 Object(...)
. 15.2.1 15.2.2.
15.1.4.2 Function(...)
. 15.3.1 15.3.2.
15.1.4.3 Array(...)
. 15.4.1 15.4.2.
15.1.4.4 String(...)
. 15.5.1 15.5.2.
15.1.4.5 Boolean(...)
. 15.6.1 15.6.2.
15.1.4.6 Number(...)
. 15.7.1 15.7.2.
15.1.4.7 Date(...)
. 15.9.2.
15.1.4.8 RegExp(...)
. 15.10.3 15.10.4.
15.1.4.9 Error(...)
. 15.11.1 15.11.2.
15.1.4.10 EvalError(...)
. 15.11.6.1.
15.1.4.11 RangeError(...)
http://javascript.ru/ecma[14.03.09 12:52:12]
. 15.11.6.2.
15.1.4.12 ReferenceError(...)
. 15.11.6.3.
15.1.4.13 SyntaxError(...)
. 15.11.6.4.
15.1.4.14 TypeError(...)
. 15.11.6.5.
15.1.4.15 URIError(...)
. 15.11.6.6.
15.1.5
15.1.5.1 Math
. 15.8.
15.2 Object
15.2.1 Object
Object
.
http://javascript.ru/ecma[14.03.09 12:52:12]
15.2.4.2 Object.prototype.toString()
toString , :
1. [[Class]] .
2. "[object ", (1),
"]".
3. (2).
http://javascript.ru/ecma[14.03.09 12:52:12]
15.2.4.3 Object.prototype.toLocaleString()
toString() . ( ,
toString this ,
toString , 15.2.4.2)
1
,
toLocaleString (" "),
. Array, Number Date ,
toLocaleString .
2
, ,
.
- .
15.2.4.4 Object.prototype.valueOf()
valueOf this.
Object (. 15.2.2.1), valueOf
: this, -
, ,
.
15.2.4.5 Object.prototype.hasOwnProperty(V)
hasOwnProperty V ,
:
1. O .
2. ToString( V ).
3. O , (2), false.
4. true.
[[HasProperty]] (. 8.6.2.4),
.
15.2.4.6 Object.prototype.isPrototypeOf(V)
isPrototypeOf V ,
:
1. O .
2. V - false.
3. V [[Prototype]] V .
http://javascript.ru/ecma[14.03.09 12:52:12]
4. V null - false.
5. O V (.
13.1.2) - true.
6. 3.
15.2.4.7 Object.prototype.propertyIsEnumerable(V)
propertyIsEnum V ,
:
1. O .
2. ToString( V ).
3. O , (2), false.
4. DontEnum - false.
5. true.
.
15.2.5 Object
Object , ,
- Object.
15.3 Function
15.3.1 Function
Function , ,
Function. ,
Function(...) new Function(...) ,
.
15.3.1.1 Function(p1, p2, ... , pn, body)
Function p1, p2,..., pn, body
( n 0 - .. "p", body
), :
1. Function,
(15.3.2.1).
15.3.2 Function
Function new , , ..
.
15.3.2.1 new Function(p1, p2, ... , pn, body)
http://javascript.ru/ecma[14.03.09 12:52:12]
(
.
Function 13.2 ,
P ,
body .
,
17. (16).
prototype
.
http://javascript.ru/ecma[14.03.09 12:52:12]
, ,
. ,
:
new Function("a", "b", "c", "return a+b+c")
new Function("a, b, c", "return a+b+c")
new Function("a,b", "c", "return a+b+c")
15.3.3 Function
[[Prototype]] Function Function (. 15.3.4).
length ( 1),
Function :
15.3.3.1 Function.prototype
Function.prototype - Function (.
15.3.4).
{ DontEnum, DontDelete, ReadOnly }.
15.3.4 - Function
- Function Function ( [[Class]]
, ,
undefined.
"Function")
[[Prototype]] - Function
- Object (15.3.2.1).
" ". , undefined.
- Function valueOf,
valueOf - Object.
15.3.4.1 Function.prototype.constructor
Function.prototype.constructor
Function .
15.3.4.2 Function.prototype.toString()
. . , ,
,
.
toString . TypeError,
this Function. ,
http://javascript.ru/ecma[14.03.09 12:52:12]
.
15.3.4.3 Function.prototype.apply(thisArg, argArray)
apply , thisArg argArray,
[[Call]] .
[[Call]], TypeError.
thisArg null undefined, this
. this
ToObject( thisArg ).
argArray null undefined, .
, argArray , (.
10.1.8), TypeError. argArray
, (ToUint32( argArray. length))
argArray[ 0], argArray[ 1], ..., argArray[ ToUint32( argArray. length)- 1].
length apply 2.
15.3.4.4 Function.prototype.call(thisArg [ , arg1 [ , arg2, ... ] ] )
call , thisArg () arg1, arg2
.., [[Call]]
. [[Call]], TypeError.
arg1, arg2 ..
thisArg null undefined, this
. this
ToObject( thisArg ).
length call 1.
15.3.5 Function
,
[[Call]], [[Construct]] [[Scope]] (. 8.6.2 13.2).
[[Class]] "Function".
15.3.5.1 length
length , ""
, .
. ,
length , .
{ DontDelete, ReadOnly, DontEnum }.
15.3.5.2 prototype
prototype ,
[[Prototype]] , Function
. { DontDelete}.
http://javascript.ru/ecma[14.03.09 12:52:12]
15.3.5.3 [[HasInstance]](V)
, F Function.
[[HasInstance]] F V ,
:
1. V - false.
2. [[Get]] F "prototype".
3. O (2).
4. O - TypeError.
5. V [[Prototype]] V .
6. V null - false.
7. O V (.
13.1.2) - true.
8. 5.
15.4 Array
Array ()
. P ( )
, ToString(ToUint32( P))
P ToUint32( P) 2 32 - 1. Array
length, , ,
2 32 . length ,
. Array
,
. , ,
, length, , ,
. length, ,
, , length,
.
Array length - ,
.
15.4.1 Array
Array , ,
Array. , Array(...)
new Array(...) , .
15.4.1.1 Array([ item1[, item2 [,...]]])
Array , :
1. Array,
http://javascript.ru/ecma[14.03.09 12:52:12]
(15.4.2).
15.4.2 Array
Array new , , ..
.
15.4.2.1 new Array([ item0[, item1 [,...]]])
, Array
, .
[[Prototype]]
- Array, .. ,
Array.prototype (. 15.4.3.1).
[[Class]] "Array".
length .
0 item0 (
), 1 item1
( ) : k
k ,
0.
15.4.2.2 new Array(len)
[[Prototype]]
- Array, .. ,
Array.prototype (. 15.4.3.1). [[Class]]
"Array".
len Number ToUint32( len ) len , length
ToUint32( len ). len
Number ToUint32( len ) len - RangeError.
len Number, length
1, 0 len .
15.4.3 Array
[[Prototype]] Array Function (. 15.3.4).
length ( 1),
Array :
15.4.3.1 Array.prototype
Array.prototype - Array (. 15.4.4).
{ DontEnum, DontDelete, ReadOnly }.
http://javascript.ru/ecma[14.03.09 12:52:12]
15.4.4 - Array
[[Prototype]] - Array Object (15.2.3.1).
- Array . [[Class]] "Array",
length ( +0)
[[Put]], 15.2.3.1.
, - Array,
" " this,
. , this ,
[[Class]] "Array".
- Array
valueOf - Object .
valueOf ,
15.4.4.1 Array.prototype.constructor
Array.prototype.constructor Array .
15.4.4.2 Array.prototype.toString()
join
.
toString . TypeError,
this Array. ,
.
15.4.4.3 Array.prototype.toLocaleString()
toLocaleString . , ,
. ,
toString, , ,
.
:
1. [[Get]] "length".
2. ToUint32((1)).
3. separator - ,
(
).
4. ToString( separator).
5. (2) - .
http://javascript.ru/ecma[14.03.09 12:52:12]
6. [[Get]] "0".
7. (6) undefined null - .
ToObject(Result(6)). toLocaleString().
8. R (7).
9. k 1.
10. k (2), R .
11. S , R (4).
12. [[Get]] ToString( k ).
13. (12) undefined null - .
ToObject(Result(12)). toLocaleString().
14. R , S (13).
15. k 1.
16. 10.
toLocaleString . TypeError,
this Array. ,
.
, ,
.
- .
15.4.4.4 Array.prototype.concat([ item1[, item2 [,...]]])
concat item1, item2 . .,
, ,
.
:
1. A - , new Array().
2. n 0.
3. E .
4. E Array - 16.
5. k 0.
6. [[Get]] E "length".
7. k (6) - 19.
http://javascript.ru/ecma[14.03.09 12:52:12]
8. ToString( k ).
9. E , (8), -
10. - 13.
10. ToString(n).
11. [[Get]] E (8).
12. [[Put]] A (10) (11).
13. n 1.
14. k 1.
15. 7.
16. ToString( n).
17. [[Put]] A (16) E.
18. n 1.
19. . 22.
20. E (19).
21. 4.
22. [[Put]] A "length" n.
23. A .
length concat 1.
concat . ,
this Array. ,
.
concat .
15.4.4.5 Array.prototype.join(separator)
. ,
separator. ,
.
join , separator, :
1. [[Get]] "length".
2. ToUint32((1)).
http://javascript.ru/ecma[14.03.09 12:52:12]
join . ,
this Array. ,
.
join .
15.4.4.6 Array.prototype.pop()
.
1. [[Get]] "length".
2. ToUint32((1)).
3. (2) - 6.
4. [[Put]] "length" (2).
5. undefined.
6. ToString((2) - 1).
http://javascript.ru/ecma[14.03.09 12:52:12]
7. [[Get]] (6).
8. [[Delete]] (6).
9. [[Put]] "length" ((2) - 1).
10. (7).
pop . ,
this Array. ,
.
pop .
15.4.4.7 Array.prototype.push([ item1[, item2 [,...]]])
,
. .
push item1, item2 ..,
:
1. [[Get]] "length".
2. n ToUint32((1)).
3. . 7.
4. [[Put]] ToString( n) (3).
5. n 1.
6. 3.
7. [[Put]] "length" n.
8. n.
length push 1.
push . ,
this Array. ,
.
join .
15.4.4.8 Array.prototype.reverse()
, .
.
1. [[Get]] "length".
http://javascript.ru/ecma[14.03.09 12:52:12]
2. ToUint32((1)).
3. floor((2)/ 2).
4. k 0.
5. k (3), .
6. (2)- k -1.
7. ToString( k ).
8. ToString((6)).
9. [[Get]] (7).
10. [[Get]] (8).
11. , (8) 19.
12. , (7) 16.
13. [[Put]] (7) (10).
14. [[Put]] (8) (9).
15. 25.
16. [[Put]] (7) (10).
17. [[Delete]] , (8)
, .
18. 25.
19. , (7) 23.
20. [[Delete]] , (7)
, .
21. [[Put]] (8) (9).
22. 25.
23. [[Delete]] , (7)
, .
24. [[Delete]] , (8)
, .
25. k 1.
http://javascript.ru/ecma[14.03.09 12:52:12]
26. 5.
reverse . ,
this Array. ,
.
reverse .
15.4.4.9 Array.prototype.shift()
.
1. [[Get]] "length".
2. ToUint32((1)).
3. (2) - 6.
4. [[Put]] "length" (2).
5. undefined.
6. [[Get]] "0" .
7. k 1.
8. k (2) - 18.
9. ToString( k ).
10. ToString( k -1).
11. , Result(9) 12. - 15.
12. [[Get]] (9).
13. [[Put]] (10) (12).
14. 16.
15. [[Delete]] (10).
16. k 1.
17. 8.
18. [[Delete]] ToString((2)-1).
19. [[Put]] "length" ((2) - 1).
20. (6).
shift . ,
http://javascript.ru/ecma[14.03.09 12:52:12]
this Array. ,
.
shift .
15.4.4.10 Array.prototype.slice(start, end)
slice start end ,
, start end
( , end undefined). start ,
(length+ start ), length .
end , (length+ end), length
. :
1. A - , new Array().
2. [[Get]] "length".
3. ToUint32((2)).
4. ToInteger( start ).
5. (4) ,
(4)), 0). min((4), (3)).
max(((3)+
6. k (5).
7. end
ToInteger( end).
undefined,
(3).
8. (7) , max((Result(3)+
Result(7)), 0); min((7), (3)).
9. n 0.
10. k (8) - 19.
11. ToString( k ).
12. , Result(11) 13. - 15.
13. ToString( n).
14. [[Get]] (11).
15. [[Put]] A (13) (14).
16. k 1.
17. n 1.
18. 10.
19. [[Put]] A "length" n.
http://javascript.ru/ecma[14.03.09 12:52:12]
20. A .
length slice 2.
slice
this
slice
. ,
Array. ,
.
.
15.4.4.11 Array.prototype.sort(comparefn)
. (..
, ,
). comparefn undefined, ,
x y x < y ,
x = y x > y .
comparefn undefined
(. ), sort .
len ToUint32( this.length). i j P ,
, sort :
0 <= i < len
0 <= j < len
this ToString( i)
P
[[Prototype]], this .
P ToString( j)
.
1. [[Get]] "length".
2. ToUint32((1)).
3. [[Get]],
[[Put]] [[Delete]] SortCompare ( ),
[[Get]], [[Put]] [[Delete]]
, Result(2),
SortCompare [[Get]].
4. .
.
,
, , (2), ,
j, , (2), [j]
, [(j)] , [j],
old[j] , new[(j)] .
j k ,
http://javascript.ru/ecma[14.03.09 12:52:12]
, comparefn
S
.
SortCompare j k ,
:
1. ToString( j).
2. ToString( k ).
3. , (1),
, (2) - +0.
4. , (1) 1.
5. , (2) -1.
6. [[Get]] (1).
7. [[Get]] (2).
8. x (6).
http://javascript.ru/ecma[14.03.09 12:52:12]
9. y (7).
10. x y undefined - +0.
11. x undefined - 1.
12. y undefined - -1.
13. comparefn undefined - 16.
14. comparefn x y .
15. (14).
16. ToString( x).
17. ToString( y ).
18. (16) < (17) - -1.
19. (16) > (17) - 1.
20. +0.
1
, undefined,
undefined , - ,
undefined
.
2
sort . ,
this Array. ,
.
sort .
15.4.4.12 Array.prototype.splice(start, deleteCount [, item1 [, item2[,...]]])
splice start, deleteCount
() item1, item2 .., deleteCount start
item1, item2 . :
1. A - , new Array().
2. [[Get]] "length".
3. ToUint32((2)).
4. ToInteger( start ).
5. (4) ,
(4)), 0). min((4), (3)).
max(((3)+
7. k 0.
8. k (6) - 16.
9. ToString((5)+ k ).
10. (9) - 11.
- 14.
11. ToString( k ).
12. [[Get]] (9).
13. [[Put]] A (11) (12).
14. k 1.
15. 8.
16. [[Put]] A "length" (6).
17. item1, item2, ..
18. (17) (6) - 48.
19. (17) (6) - 37.
20. k (5).
21. k ((3)-(6)) - 31.
22. ToString( k+ (6)).
23. ToString( k+ (17)).
24. (22) - 25.
28.
25. [[Get]] (22).
26. [[Put]] (23) (25).
27. 29.
28. [[Delete]] (23).
29. k 1.
30. 21.
31. k (3).
32. k ((3)-(6)+(17)) - 48.
http://javascript.ru/ecma[14.03.09 12:52:12]
splice . ,
this Array. ,
.
splice .
http://javascript.ru/ecma[14.03.09 12:52:12]
((2)+(3)).
22. ((2)+(3)).
http://javascript.ru/ecma[14.03.09 12:52:12]
"length"
length unshift 1.
unshift . ,
this Array. ,
.
unshift .
15.4.5 Array
Array - Array,
:
15.4.5.1 [[Put]](P, V)
Array [[Put]], ,
ECMAScript (. 8.6.2.2).
, A - Array, P - . [[Put]] A
P V , :
1. [[CanPut]] A , P.
2. (1) false - .
3. A P - 7.
4. P "length" - 12.
5. P A V .
6. 8.
7. P, V
.
8. P - .
9. ToUint32( P) , length A - .
10. ( ) length A ToUint32( P)+1.
11. .
12. ToUint32( V ).
13. (12) ToNumber( V ) - RangeError.
14. arg , length A ,
, (12), A ( )
ToString( k ) - .
15. P A (12).
http://javascript.ru/ecma[14.03.09 12:52:12]
16. .
15.4.5.2 length
length Array ,
, .
length { DontEnum, DontDelete }.
15.5 String
15.5.1 String
String
.
.
, ..
ToUint16 (9.7)
16- .
, .
length fromCharCode 1.
15.5.4 - String
- String String ( [[Class]] "String") ,
.
[[Prototype]] - String Object (15.2.3.1).
15.5.4.1 String.prototype.constructor
String.prototype.constructor
String.
15.5.4.2 String.prototype.toString()
. (, String toString
, valueOf.)
toString . TypeError,
this String. ,
.
15.5.4.3 String.prototype.valueOf()
.
valueOf . TypeError,
this String. ,
.
15.5.4.4 String.prototype.charAt(pos)
, , pos ,
.
, .
( String).
pos Number, x.charAt( pos )
x.substring( pos, pos+ 1).
charAt pos ,
:
1. ToString, this .
2. ToInteger( pos ).
http://javascript.ru/ecma[14.03.09 12:52:12]
3. (1).
4. (2) 0 (3) - .
5. 1, (1),
(2). () (1)
0, - 1 .
charAt . ,
this String. ,
.
15.5.4.5 String.prototype.charCodeAt(pos)
( , 2 16 ),
pos ,
. ,
NaN.
charCodeAt pos ,
:
1. ToString, this .
2. ToInteger( pos ).
3. (1).
4. (2) 0 (3) - NaN.
5. Number,
(2) (1). () (1)
0, - 1 .
charCodeAt . ,
this String. ,
.
15.5.4.6 String.prototype.concat([ string1[, string2 [,...]]])
concat item1, item2 . .,
, ( ),
string1, string2 .. (
).
( String). :
1. ToString, this .
2. R (1).
http://javascript.ru/ecma[14.03.09 12:52:12]
3. . 7.
4. ToString((3)).
5. R - , R ,
(4).
6. 3.
7. R .
length concat 1.
concat . ,
this String. ,
.
15.5.4.7 String.prototype.indexOf(searchString, position)
searchString
, position ,
. -1.
position undefined, 0
.
indexOf , searchString position
:
1. ToString, this .
2. ToString( searchString ).
3. ToInteger( position ). ( position undefined,
0).
4. (1).
5. min(max((3), 0), (4)).
6. , (2).
7. k , , (5), , k+
(6) , (4), j, ,
(6), k+j (1) j
(2). k - -1.
8. (7).
length indexOf 1.
indexOf . ,
http://javascript.ru/ecma[14.03.09 12:52:12]
this String. ,
.
15.5.4.8 String.prototype.lastIndexOf(searchString, position)
searchString
, position ,
. -1.
position undefined,
.
lastIndexOf , searchString position
:
1. ToString, this .
2. ToString( searchString ).
3. ToNumber( position ). ( position undefined,
NaN).
4.
(3)
ToInteger((3)).
NaN
+.
5. (1).
6. min(max((4), 0), (5)).
7. , (2).
8. k , ,
(6), , k+ (7) , (5),
j, , (7), k+j
(1) j (2). k
- -1.
9. (8).
length lastIndexOf 1.
lastIndexOf . ,
this String. ,
.
15.5.4.9 String.prototype.localeCompare(that)
localeCompare that, ,
NaN,
(
) that ( ).
. ,
, ,
http://javascript.ru/ecma[14.03.09 12:52:12]
, , this
that , this that
.
localeCompare , this that,
( 15.4.4.11)
. , localeCompare 0 -0,
,
.
,
- ,
0,
,
.
1
localeCompare
Array.prototype.sort , .
2
,
, ECMAScript
. , ,
,
( , ,
C D). ,
.
,
.
3
localeCompare . ,
this String. ,
.
4
, ,
.
- .
15.5.4.10 String.prototype.match(regexp)
regexp , [[Class]]
"RegExp", new RegExp(
regexp ). string this .
:
regexp . global false - RegExp.prototype.exec (.
15.10.6.2) regexp string .
http://javascript.ru/ecma[14.03.09 12:52:12]
match . ,
this String. ,
.
15.5.4.11 String.prototype.replace(searchValue, replaceValue)
string this .
searchValue - (.. , [[Class]]
"RegExp" ), : searchValue . global false string
searchValue . searchValue .global true - string
searchValue .
, String.prototype.match, searchValue . lastIndex.
m - searchValue
(NCapturingParens 15.10.2.1).
searchValue - , searchString =
ToString( searchValue ) string
searchString . m 0.
replaceValue - ,
m + 3 . 1 - . searchValue , m
MatchResult (. 15.10.2.1). m + 2 string ,
, m + 3 string .
,
,
.
, newstring replaceValue .
,
, newstring
newstring .
$- : ,
. ,
"$1,$2".replace(/(\$(\d))/g, "$$1-$1$2") "$1-$11,$1-$22". $ newstring ,
, ,
.
$$
http://javascript.ru/ecma[14.03.09 12:52:12]
$&
$`
$'
$n
$nn
.
string , .
string , .
n- , n - 1 9 $n
. n <= m, n-
undefined - . n> m -
.
nn- , nn - 01
99. nn<= m, nn- undefined -
. nn> m - .
replace . ,
this String. ,
.
15.5.4.12 String.prototype.search(regexp)
regexp , [[Class]]
"RegExp", new RegExp(
regexp ). string this .
string regexp .
, string
, -1 , .
1
lastIndex
regexp .
global
regexp.
lastIndex
2
charAt . ,
this String. ,
.
15.5.4.13 String.prototype.slice(start, end)
slice start end,
, start
end ( ,
end undefined). start ,
(sourceLength+ start ), sourceLength . end
, (sourceLength+ end), sourceLength
. ( String).
:
1. ToString, this .
2. (1).
3. ToInteger( start ).
http://javascript.ru/ecma[14.03.09 12:52:12]
4. end
ToInteger( end).
undefined,
(2).
5. (3) ,
(3)), 0). min((3), (2)).
max(((2)+
6. (4) ,
(4)), 0). min((4), (2)).
max(((2)+
length slice 2.
slice . ,
this String. ,
.
15.5.4.14 String.prototype.split(separator, limit)
Array,
.
separator;
, .
separator RegExp (. . ,
[[Class]] "RegExp"; . 15.10).
separator ,
, . separator
.
(, separator ,
,
.) separator - ,
this ,
. (,
"ab".split(/a*?/) ["a","b"] , "ab".split(/a*/) [""," b"]).
this ( ) , ,
separator . ,
. ,
.
separator ,
, , separator ,
( undefined)
.
(,
"A<B>bold</B>and<CODE>coded</CODE>".split(/<(\/)?([^<>]+)>/) ["A", undefined,
"B", "bold", "/", "B", "and", undefined, "CODE", "coded", "/", "CODE", ""].)
http://javascript.ru/ecma[14.03.09 12:52:12]
separator undefined,
, this ( ). limit
undefined, , limit
.
split , :
1. S = ToString( this ).
2. A - , new Array().
3. limit undefined, lim =232 -1, lim =
ToUint32( limit).
4. s - S.
5. p =0.
6. separator - RegExp ( [[Class]]
R = separator, R = ToString( separator).
"RegExp"),
7. lim = 0 - A.
8. separator undefined - 33.
9. s = 0 - 31.
10. q = p .
11. q = s - 28.
12. SplitMatch(R, S, q) z ( MatchResult).
13. z failure - 26.
14. z State. e endIndex z cap
captures z .
15. e = p - 26.
16. T - , S,
p () q ( ).
17. [[Put]] A A.length T.
18. A.length = lim - A.
19. p = e.
20. i =0.
21. i cap - 10.
22. i = i + 1.
http://javascript.ru/ecma[14.03.09 12:52:12]
1
split . ,
this String. ,
.
http://javascript.ru/ecma[14.03.09 12:52:12]
2
split separator.
RegExp .
global
, separator -
undefined,
(2).
substring . ,
this String. ,
.
15.5.4.16 String.prototype.toLowerCase()
, .
.
( String).
.
,
http://javascript.ru/ecma[14.03.09 12:52:12]
. .
1
( UnicodeData. txt,
SpecialCasings. txt, 2.1.8 ).
2
toLowerCase . ,
this String. ,
.
15.5.4.17 String.prototype.toLocaleLowerCase()
toLowerCase, ,
,
.
(, ),
.
1
toLocaleLowerCase . ,
this String. ,
.
2
, ,
.
- .
15.5.4.18 String.prototype.toUpperCase()
String.prototype.toLowerCase ,
,
.
1
toUpperCase, toLowerCase ,
. , s.toUpperCase().
toLowerCase()
s.toLowerCase().
2
toUpperCase . ,
this String. ,
.
15.5.4.19 String.prototype.toLocaleUpperCase()
toUpperCase, ,
,
.
(, ),
.
http://javascript.ru/ecma[14.03.09 12:52:12]
1
toLocaleUpperCase . ,
this String. ,
.
2
, ,
.
- .
15.5.5 String
String - String,
[[Value]] length.
[[Value]] ,
String.
15.5.5.1 length
, String.
String .
{ DontEnum, DontDelete, ReadOnly }.
15.6 Boolean
15.6.1 Boolean
Boolean
.
15.6.1.1 Boolean(value)
( Boolean), ToBoolean( value).
15.6.2 Boolean
Boolean new , , ..
.
15.6.2.1 new Boolean(value)
[[Prototype]]
- Boolean, .. ,
Boolean.prototype (. 15.6.3.1).
[[Class]] "Boolean" .
[[Value]] ToBoolean( value).
15.6.3 Boolean
[[Prototype]] Boolean http://javascript.ru/ecma[14.03.09 12:52:12]
Function (. 15.3.4).
length ( 1),
Boolean :
15.6.3.1 Boolean.prototype
Boolean.prototype - Boolean (.
15.6.4).
{ DontEnum, DontDelete, ReadOnly }.
15.6.4 - Boolean
- Boolean Boolean ( [[Class]]
false.
"Boolean") ,
[[Prototype]]
- Object (15.2.3.1).
Boolean
, -
Boolean, " Boolean" this,
. this ,
[[Class]] "Boolean" ,
TypeError. " "
, Boolean, ..
[[Value]] Boolean.
15.6.4.1 Boolean.prototype.constructor
Boolean.prototype.constructor
Boolean .
15.6.4.2 Boolean.prototype.toString()
true, "true". ,
false "false".
toString . TypeError,
this Boolean. ,
.
15.6.4.3 Boolean.prototype.valueOf()
.
valueOf . TypeError,
this Boolean. ,
.
15.6.5 Boolean
Boolean , ,
- Boolean.
http://javascript.ru/ecma[14.03.09 12:52:12]
15.7 Number
15.7.1 Number
Number
.
Number
, -
Number, " Number" this,
. this ,
[[Class]] "Number" ,
TypeError. " "
, Number, ..
[[Value]] Number.
15.7.4.1 Number.prototype.constructor
Number.prototype.constructor
Number.
15.7.4.2 Number.prototype.toString(radix)
radix 10 undefined,
ToString.
.
radix - 2 36, 10, ,
.
toString . TypeError,
this Number. ,
.
http://javascript.ru/ecma[14.03.09 12:52:12]
15.7.4.3 Number.prototype.toLocaleString()
, Number,
.
, ( )
, toString .
, ,
.
- .
15.7.4.4 Number.prototype.valueOf()
.
valueOf . TypeError,
this Number. ,
.
15.7.4.5 Number.prototype.toFixed(fractionDigits)
, ,
, fractionDigits . fractionDigits
undefined, 0. :
1. f ToInteger( fractionDigits ). ( fractionDigits undefined,
0).
2. f < 0 f > 20 - RangeError.
3. x - .
4. x NaN - "NaN" .
5. s - .
6. x >= 0 - 9.
7. s "-".
8. x =- x.
9. x >= 10 21 , m = ToString( x) 20.
10. n - , n 10 f - x
0. n, .
11. n =0, m "0" . , m ,
n ( , ).
12. f =0 - 20.
http://javascript.ru/ecma[14.03.09 12:52:12]
13. k - m.
14. k > f - 18.
15. z - , f+ 1 - k '0'.
16. m - z m.
17. k = f + 1.
18. a - k - f m, b - f m.
19. m - a, ".", b .
20. s m.
length toFixed 1.
toFixed ,
(. 15).
toFixed fractionDigits
0 20. toFixed
RangeError .
toFixed , toString ,
toString ,
, . ,
(1000000000000000128).toString()
"1000000000000000100",
(1000000000000000128).toFixed(0) "1000000000000000128".
15.7.4.6 Number.prototype.toExponential(fractionDigits)
, ,
, fractionDigits . fractionDigits
undefined - ,
( , ToString, ,
).
:
1. x - .
2. f ToInteger( fractionDigits ).
3. x NaN - "NaN" .
4. s - .
5. x >= 0 - 8.
6. s "-".
7. x =- x.
http://javascript.ru/ecma[14.03.09 12:52:12]
8. x = +, m = "Infinity" 30.
9. fractionDigits undefined - 14.
10. f < 0 f > 20 - RangeError.
11. x = 0 - 16.
12. e n - , 10 f <= n <10f+1 ,
n * 10 e- f - x 0.
e n - e n, n * 10 e- f .
13. 20.
14. x != 0 - 19.
15. f = 0.
16. m - , f + 1 '0'.
17. e = 0.
18. 21.
19. e, n f - , , f >= 0, 10 f <= n <10f+ 1 , n
* 10 e- f x f . ,
n f + 1 , n 10,
n .
20. m - , n ( , ).
21. f = 0 - 24.
22. a - m, b - f m.
23. m - a, ".", b .
24. e =0 - c = "+" , d = "0" 29.
25. e > 0 - c = "+" 28.
26. c = "-".
27. e =- e.
28. d - , e ( ,
).
29. m - m, "e", c d .
30. s m. length toExponential
1.
http://javascript.ru/ecma[14.03.09 12:52:12]
toExponential ,
(. 15).
toExponential fractionDigits
0 20. toExponential
RangeError .
, ,
,
19:
e, n f - , f >= 0, 10 f <= n <10f+1 , n * 10 e-f
x f .
n - , n *
10 e-f x. n .
15.7.4.7 Number.prototype.toPrecision(precision)
, ,
precision-1
, precision . precision
undefined - ToString (. 9.8.1)
. :
1. x - .
2. precision undefined - ToString( x).
3. p ToInteger( precision).
4. x NaN - "NaN" .
5. s - .
6. x >= 0 - 9.
7. s "-".
8. x = - x.
9. x = +, m = "Infinity" 30.
10. p <1 p > 21 - RangeError.
11. x != 0 - 15.
12. m - , p '0'.
13. e = 0.
14. 18.
http://javascript.ru/ecma[14.03.09 12:52:12]
[[Prototype]] Math -
Object (15.2.3.1). [[Class]] Math "Math".
Math [[Construct]]. Math
new .
Math [[Call]]. Math .
" x" ,
8.5 .
15.8.1 - Math
15.8.1.1 E
e, ,
2.7182818284590452354.
{ DontEnum, DontDelete, ReadOnly }.
15.8.1.2 LN10
2.302585092994046.
10,
0.6931471805599453.
2,
Math.LOG2E
Math.LN2 .
15.8.1.5 LOG10E
e ( ) 10,
0.4342944819032518.
{ DontEnum, DontDelete, ReadOnly }.
http://javascript.ru/ecma[14.03.09 12:52:12]
Math.LOG10E
Math.LN10 .
15.8.1.6 PI
, ,
3.1415926535897932.
{ DontEnum, DontDelete, ReadOnly }.
15.8.1.7 SQRT1_2
0.7071067811865476.
1/2,
Math.SQRT1_
Math.SQRT2 .
15.8.1.8 SQRT2
1.4142135623730951.
2,
acos, asin, atan, atan2, cos, exp, log, pow, sin sqrt
,
,
, .
,
. , ,
ECMAScript
,
C .
, (
),
IEEE 754, fdlibm,
Sun
Microsystems ( fdlibm
comment@sunpro.eng.sun.com).
,
http://javascript.ru/ecma[14.03.09 12:52:12]
, .
15.8.2.1 abs(x)
x; , x,
.
x NaN - NaN.
x -0 - +0.
x - - +.
15.8.2.2 acos(x)
x.
+0 +.
x
x
x
x
NaN - NaN.
1 - NaN.
-1 - NaN.
1 - +0.
15.8.2.3 asin(x)
x.
-/2 +/2.
x
x
x
x
x
NaN - NaN.
1 - NaN.
-1 - NaN.
+0 - +0.
-0 - -0.
15.8.2.4 atan(x)
x.
-/2 +/2.
x
x
x
x
x
NaN - NaN.
+0 - +0.
-0 - -0.
+ - +/2.
+ - -/2.
15.8.2.5 atan2(y, x)
y/x
y x, y x
. , ( y , x)
.
- +.
x y NaN - NaN.
y> 0, x +0 -
http://javascript.ru/ecma[14.03.09 12:52:12]
+/2.
y> 0, x -0 -
+/2.
y +0, x> 0 - +0.
y +0 x +0 - +0.
y +0, x -0 -
+.
y +0, x <0 -
+.
y -0, x >0 - -0.
y -0 x +0 - -0.
y -0 x -0 -
-.
y -0, x<0 - .
y <0, x +0 -
-/2.
y <0, x -0 - /2.
y >0, y , x + - +0.
y> 0, y - , x - -
+.
y< 0, y - , x + - -0.
y <0, y - , x - -
-.
y +, x -
+/2.
If y -, x -
-/2.
y + x + -
+/4.
y + x - -
+3/4.
y - x + -
-/4.
y - x - -
-3/4.
15.8.2.6 ceil(x)
( -) , x
. x - x.
x
x
x
x
x
x
NaN - NaN.
+0 - +0.
-0 - -0.
+ - +.
- - -.
0, -1 - -0.
Math.ceil(x) -Math.floor(-x).
http://javascript.ru/ecma[14.03.09 12:52:12]
15.8.2.7 cos(x)
x.
.
x
x
x
x
x
NaN - NaN.
+0 - 1.
-0 - 1.
+ - NaN.
- - NaN.
15.8.2.8 exp(x)
x (e x, e ).
x
x
x
x
x
NaN - NaN.
+0 - 1.
-0 - 1.
+ - +.
- - +0.
15.8.2.9 floor(x)
( +) , x
. x - x.
x
x
x
x
x
x
NaN - NaN.
+0 - +0.
-0 - -0.
+ - +.
- - -.
0, -1 - +0.
Math.floor(x)
-Math.ceil(-x) .
15.8.2.10 log(x)
x.
x
x
x
x
x
NaN - NaN.
0 - NaN.
+0 -0 - -.
1 - +0.
+ - +.
NaN - NaN.
11.8.5, , +0 , 0.
length max 2.
15.8.2.12 min([ value1 [, value2 [,...]]])
, ToNumber
, .
, +.
NaN - NaN.
11.8.5, , +0 , 0.
length min 2.
15.8.2.13 pow(x, y)
x, y .
y NaN - NaN.
y +0 - 1, x NaN.
y -0 - 1, x NaN.
x NaN, y - NaN.
abs( x)>1, y + - + .
abs( x)>1, y - - +0.
abs( x)==1, y + - NaN .
abs( x)==1, y - - NaN .
abs( x)<1, y + - +0.
abs( x)<1, y - - +.
x +, y >0 - + .
x +, y <0 - +0 .
x -, y >0 y - , - .
x -, y >0 y , + .
x -, y <0 y - , -0 .
x -, y <0 y , +0 .
x +0, y >0 - +0 .
x +0, y >0 - + .
x -0, y >0 y - , -0 .
x -0, y >0 y , +0 .
x -0, y <0 y - , -.
x -0, y <0 y , + .
x<0, x - , y - y ,
NaN.
15.8.2.14 random()
, 0, 1,
http://javascript.ru/ecma[14.03.09 12:52:12]
. .
15.8.2.15 round(x)
, x .
x -
, +. x - , x.
x
x
x
x
x
x
x
NaN - NaN.
+0 - +0.
-0 - -0.
+ - + .
- - -.
0, 0.5 , +0.
0, -0.5 - -0.
1
Math.round(3.5) 4, Math.round(-3.5) -3 .
2
Math.round(x) Math.floor(x+0.5), ,
x -0 0, -0.5 . Math.round(x)
-0, Math.floor(x+0.5) +0.
15.8.2.16 sin(x)
x. .
x
x
x
x
NaN - NaN.
+0 - +0.
-0 - -0.
+ - - NaN.
15.8.2.17 sqrt(x)
x.
x
x
x
x
x
NaN - NaN.
0 - NaN.
+0 - +0.
-0 - -0.
+ - + .
15.8.2.18 tan(x)
x.
.
x NaN - NaN.
x +0 - +0.
x -0 - -0.
http://javascript.ru/ecma[14.03.09 12:52:12]
x + - - NaN.
15.9 Date
15.9.1 Date
Date ,
. NaN. , Date
.
.
, , NaN,
NaN.
15.9.1.1
ECMAScript 1 1970 UTC
( - .. ).
. , 86,400,000
. ECMAScript -9
007 199 254 740 991 9 007 199 254 740 991.
285
616 1 1970 .
,
ECMAScript Date, : -100 000 000 +100
000 000 1 1970 UTC.
8 640 000 000 000 000 1 1970
UTC.
1 1970 UTC
+0.
15.9.1.2
t
( t) = floor(t /)
(86400000).
: (t)= t modulo
15.9.1.3
ECMAScript ,
.
, , ( 4) ((
100) ( 400)). , y
:
(y) = 365
= 366 (y
= 365 (y
= 366 (y
(y modulo 4) != 0
modulo 4) = 0 (y modulo 100) != 0
modulo 100) = 0 (y modulo 400) != 0
modulo 400) = 0
http://javascript.ru/ecma[14.03.09 12:52:12]
365 .
.
y :
(y) = 365 * (y-1970) + floor((y-1969)/4) floor((y-1901)/100) + floor((y1601)/400)
:
(y)= (y )
:
(t) = y ( )
, (y ) t
1 , , 0
:
(t)
= 0 ((t)) = 365
= 1 ((t)) = 366
15.9.1.4
0 11 .
(t) t
:
(t) = 0 0 <= (t)< 31
= 1 31
<= (t) < 59+(t)
= 2 59+(t) <= (t) < 90+(t)
= 3 90+(t) <= (t) < 120+(t)
= 4 120+(t) <= (t) < 151+(t)
= 5 151+(t) <= (t) < 181+(t)
= 6 181+(t) <= (t) < 212+(t)
= 7 212+(t) <= (t) < 243+(t)
= 8 243+(t) <= (t) < 273+(t)
= 9 273+(t) <= (t) < 304+(t)
= 10 304+(t) <= (t) < 334+(t)
= 11 334+(t) <= (t) < 365+(t)
=
=
=
=
=
=
=
=
(t)-119-(t)
(t)-150-(t)
(t)-180-(t)
(t)-211-(t)
(t)-242-(t)
(t)-272-(t)
(t)-303-(t)
(t)-333-(t)
(t)=
(t)=
(t)=
(t)=
(t)=
(t)=
(t)=
(t)=
4
5
6
7
8
9
10
11
15.9.1.6
t
( t)=( ( t) + 4) modulo 7
, 0, ; 1 - ; 2 - ; 3 ; 4 - ; 5 - ; 6 - . , (0)
4, 1 1970 .
15.9.1.8
, ECMAScript .
- LocalTZA, , ,
UTC, () .
LocalTZA. LocalTZA ,
.
15.9.1.9
, ECMAScript .
(t),
, :
(1)
t - (( t))
(2) t
( t)
(3)
((( t))
(4)
ECMAScript ,
. ,
.
, ,
.
,
ECMAScript
( ),
.
http://javascript.ru/ecma[14.03.09 12:52:12]
,
.
15.9.1.9b
UTC :
(t)= t + LocalTZA + (t)
UTC :
UTC( t) = t - LocalTZA - (t - LocalTZA)
, UTC(( t)) t.
15.9.1.10 , ,
:
( t) = floor(t / ) modulo
( t) = floor(t / ) modulo
( t) = floor(t / ) modulo
(t)= t modulo
= 24
= 60
= 60
= 1000
= * = 60000
= * = 3600000
15.9.1.11 (hour, min, sec, ms)
,
ECMAScript.
:
1. hour , min , sec , ms NaN.
2. ToInteger( hour ).
3. ToInteger( min ).
4. ToInteger( sec ).
5. ToInteger( ms ).
http://javascript.ru/ecma[14.03.09 12:52:12]
3.
,
,
ToInteger(
(2)),
3 ,
. , 64-
64- .
-0 +0.
15.9.2 Date
Date , , ,
(UTC).
Date(...)
.
new Date(...)
7. ms , ToNumber( ms ), 0.
8. (1) NaN 0 <= ToInteger((1)) < 99, (8)
1900 + ToInteger((1)). (8) (1).
9. ((8), (2), (3)).
10. ((4), (5), (6), (7)).
11. ((9), (10)).
12.
(UTC((11))).
[[Value]]
(V ) .
5. (1) , , parse (.
15.9.4.2). V - .
6. 4.
15.9.3.3 new Date()
[[Prototype]]
- Date, .. ,
Date.prototype (. 15.9.4.1).
[[Class]] "Date".
[[Value]]
( UTC).
15.9.4 Object
[[Prototype]] Date Function (. 15.3.4).
http://javascript.ru/ecma[14.03.09 12:52:12]
length ( 7),
Date :
15.9.4.1 Date.prototype
Date.prototype - Date (.
15.9.5).
{ DontEnum, DontDelete, ReadOnly }.
15.9.4.2 Date.parse(string)
parse ToString
. - UTC,
. ,
UTC - ,
.
x - Date,
ECMAScript,
,
:
x. valueOf()
Date.parse(x. toString())
Date.parse(x.toUTCString())
Date.parse(x. toLocaleString())
, .
, , Date.parse ,
,
toString toUTCString.
15.9.4.3 Date.UTC(year, month[, date[, hours [, minutes[, seconds[, ms]]]]])
UTC ,
. UTC 2 7,
year, month () date, hours, minutes,
seconds ms . :
1. ToNumber( year).
2. ToNumber( month).
3. date, ToNumber( date), 1.
4. hours , ToNumber( hours ), 0.
5. minutes , ToNumber( minutes ), 0.
http://javascript.ru/ecma[14.03.09 12:52:12]
UTC Date :
Date,
UTC, .
15.9.5 - Date
- Date Date ( [[Class]] "Date"),
NaN.
[[Prototype]] - Date Object (15.2.3.1).
, - Date,
" Date" this,
. :
this , [[Class]]
"Date", TypeError. " "
, Date, ..
[[Value]] Date.
15.9.5.1 Date.prototype.constructor
Date.prototype.constructor Date .
15.9.5.2 Date.prototype.toString()
.
, Date
.
Date d,
Date.prototype.parse(d.toString()) (. 15.9.4.2) d.
15.9.5.3 Date.prototype.toDateString()
http://javascript.ru/ecma[14.03.09 12:52:12]
, Date,
, .
15.9.5.4 Date.prototype.toTimeString()
.
, Date,
,
15.9.5.5 Date.prototype.toLocaleString()
.
, Date
,
.
, ,
.
- .
15.9.5.6 Date.prototype.toLocaleDateString()
.
, Date,
, ,
.
, ,
.
- .
15.9.5.7 Date.prototype.toLocaleTimeString()
.
, Date,
, ,
.
, ,
.
- .
15.9.5.8 Date.prototype.valueOf()
valueOf , .
15.9.5.9 Date.prototype.getTime()
1. this , [[Class]] "Date" TypeError.
http://javascript.ru/ecma[14.03.09 12:52:12]
2. .
15.9.5.10 Date.prototype.getFullYear()
1. t - .
2. t NaN - NaN.
3. (( t)).
15.9.5.11 Date.prototype.getUTCFullYear()
1. t - .
2. t NaN - NaN.
3. (t).
15.9.5.12 Date.prototype.getMonth()
1. t - .
2. t NaN - NaN.
3. (( t)).
15.9.5.13 Date.prototype.getUTCMonth()
1. t - .
2. t NaN - NaN.
3. (t).
15.9.5.14 Date.prototype.getDate()
1. t - .
2. t NaN - NaN.
3. (( t)).
15.9.5.15 Date.prototype.getUTCDate()
1. t - .
2. t NaN - NaN.
3. ( t).
15.9.5.16 Date.prototype.getDay()
1. t - .
2. t NaN - NaN.
http://javascript.ru/ecma[14.03.09 12:52:12]
3. Return (( t)).
15.9.5.17 Date.prototype.getUTCDay()
1. t - .
2. t NaN - NaN.
3. ( t).
15.9.5.18 Date.prototype.getHours()
1. t - .
2. t NaN - NaN.
3. ((t)).
15.9.5.19 Date.prototype.getUTCHours()
1. t - .
2. t NaN - NaN.
3. ( t).
15.9.5.20 Date.prototype.getMinutes()
1. t - .
2. t NaN - NaN.
3. ((t)).
15.9.5.21 Date.prototype.getUTCMinutes()
1. t - .
2. t NaN - NaN.
3. (t).
15.9.5.22 Date.prototype.getSeconds()
1. t - .
2. t NaN - NaN.
3. ((t)).
15.9.5.23 Date.prototype.getUTCSeconds()
1. t - .
http://javascript.ru/ecma[14.03.09 12:52:12]
2. t NaN - NaN.
3. (t).
15.9.5.24 Date.prototype.getMilliseconds()
1. t - .
2. t NaN - NaN.
3. ((t)).
15.9.5.25 Date.prototype.getUTCMilliseconds()
1. t - .
2. t NaN - NaN.
3. (t).
15.9.5.26 Date.prototype.getTimezoneOffset()
UTC .
1. t - .
2. t NaN - NaN.
3. (t - (t)) / .
15.9.5.27 Date.prototype.setTime(time)
1. this - Date, TypeError.
2. ToNumber( time ).
3. ((1)).
4. [[Value]] this (2).
5. [[Value]] this.
15.9.5.28 Date.prototype.setMilliseconds(ms)
1. t - ( ).
2. ToNumber( ms ).
3.
(( t),
( t), (2)).
( t),
4. UTC(((t), (3))).
5. [[Value]] this ((4)).
http://javascript.ru/ecma[14.03.09 12:52:12]
6. [[Value]] this.
15.9.5.29 Date.prototype.setUTCMilliseconds(ms)
1. t - .
2. ToNumber( ms ).
3.
(( t),
( t), (2)).
( t),
4. (( t), (3)).
5. [[Value]] this ((4)).
6. [[Value]] this.
15.9.5.30 Date.prototype.setSeconds(sec [, ms ] )
ms , , ms
getMilliseconds().
1. t - ( ).
2. ToNumber( sec ).
3. ms - (t). ToNumber( ms ).
4.
(3)).
(( t),
( t),
(2),
5. UTC(((t), (4))).
6. [[Value]] this ((5)).
7. [[Value]] this.
length setSeconds 2.
15.9.5.31 Date.prototype.setUTCSeconds(sec [, ms ] )
ms , , ms
getUTCMilliseconds().
1. t - .
2. ToNumber( sec ).
3. ms - (t). ToNumber( ms ).
4.
(3)).
(( t),
5. (( t), (4)).
http://javascript.ru/ecma[14.03.09 12:52:12]
( t),
(2),
length setUTCMinutes 3.
15.9.5.35 Date.prototype.setHours(hour[, min [, sec[, ms]]])
min , , min
getMinutes().
sec , , sec
getSeconds(). ms , ,
ms getMilliseconds().
1. t - ( ).
2. ToNumber( hour ).
3. min - (t). ToNumber( min ).
4. sec - (t). ToNumber( sec ).
5. ms - (t). ToNumber( ms ).
6. ((2), (3), (4), (5)).
7. UTC(((t), (6))).
8. [[Value]] this ((7)).
9. [[Value]] this.
length setHours 4.
15.9.5.36 Date.prototype.setUTCHours(hour [, min[, sec [, ms ]]])
min , , min
getUTCMinutes().
sec , , sec
getUTCSeconds(). ms , ,
ms getUTCMilliseconds().
1. t - .
2. ToNumber( hour ).
3. min - (t). ToNumber( min ).
4. sec - (t). ToNumber( sec ).
5. ms - (t). ToNumber( ms ).
6. ((2), (3), (4), (5)).
7. (( t), (6)).
http://javascript.ru/ecma[14.03.09 12:52:12]
http://javascript.ru/ecma[14.03.09 12:52:12]
(t).
getUTCDate().
1. t - . NaN,
t +0.
2. ToNumber( year).
3. month
ToNumber( month).
(t).
Perl 5 .
15.10.1
RegExp - .
, .
::
::
http://javascript.ru/ecma[14.03.09 12:52:12]
::
[]
::
::
^
$
\b
\B
::
::
*
+
?
{
{
{
}
,}
, }
::
.
\
Escape
( )
(?:
(?=
(?!
)
)
)
::
:
^ $ \ . * + ? ( ) [ ] { } |
Escape ::
Escape
Escape
Escape
Escape ::
Escape
c
Escape
Escape
Escape
http://javascript.ru/ecma[14.03.09 12:52:12]
Escape ::
f n r t v
::
a b c d e f g h i j k l m n o p q r s t u v w x y z
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Escape ::
Escape ::
[
Escape ::
d D s S w W
::
[ [ {^}]
[^ ]
::
[]
::
-
::
-
::
::
\ Escape
\ ] -
Escape ::
Escape
b
Escape
Escape
15.10.2
,
. ,
, , ,
.
http://javascript.ru/ecma[14.03.09 12:52:12]
15.10.2.1
:
Input - , .
input[n] n- input, n 0
() InputLength ( ).
InputLength - Input.
NCapturingParens - (. .
,
:: ( )) .
- (, (
:: ( ).
IgnoreCase - ignoreCase (" ")
RegExp.
Multiline - multiline ("") RegExp.
,
:
- .
- (endIndex, captures), endIndex - integer,
captures - NCapturingParens .
. endIndex
,
, captures . n captures , ,
n- , undefined, n-
.
,
.
MatchResult ,
failure, , .
(. .
, ),
State
MatchResult. ,
, , ,
.
(
) ,
, State.
, State,
. , failure.
,
( ) MatchResult.
(
) ,
, .
,
http://javascript.ru/ecma[14.03.09 12:52:12]
.
, ,
, .
, , .
, ,
, .
,
.
(
) true,
, false, .
Escape , . Escape
Escape escape-:
ch , escape- ch ,
n , escape-
n- .
15.10.2.2
:: :
1. , m.
2. , : str
index , :
1. Input - str.
15.10.2.
2. InputLength - Input.
15.10.2.
3. c - ,
MatchResult.
4. cap - NCapturingParens
1 NCapturingParens .
undefined,
5. x - (index, cap ).
6. m(x, c) .
: ("")
. RegExp.prototype.exec
, , ,
, , ,
. 15.10.2 ,
SyntaxError. ,
,
(
, - ,
http://javascript.ru/ecma[14.03.09 12:52:12]
).
15.10.2.3
::
, , .
:: |
:
1. , m1 .
2. , m2 .
3. -,
x c - :
1. m1(x, c) , r.
2. r failure, r.
3. m2(x, c) .
: |
. (
). ,
(
). , ,
,
. ,
.
, |,
undefined. , ,
/a|ab/.exec("abc")
"a" , "ab" . ,
/((a)|(ab))((c)|(bc))/.exec("abc")
["abc", "a", "a", undefined, "bc", undefined, "bc"]
["abc", "ab", undefined, "ab", "c", "c", undefined]
15.10.2.4
Alternative :: [empty] ,
: x c ,
c(x) .
http://javascript.ru/ecma[14.03.09 12:52:12]
::
:
1. , m1 .
2. , m2 .
3. -,
x c - :
1. d , - y
m2(y, c) .
2. m1(x, d) .
.
, ,
,
,
.
15.10.2.5
::
-, : x c ,
:
1. , t.
2. t(x) , r.
3. r false - failure.
4. c(x) .
:: ,
, .
::
:
1. , m.
2. , : min , (
) max greedy.
3. max min - SyntaxError.
4. parenIndex - ,
,
. , :: (
) , ,
:: ( ) .
http://javascript.ru/ecma[14.03.09 12:52:12]
5. parenCount -
. , :: ( )
.
6. -,
x c - :
14. c(x) .
: ,
, . "" ("non-greedy") -
, .
"" ("greedy"), Atom
,
. Atom, ,
.
Atom ,
(, -, )
.
. (n-)
((n-1)-) . ,
.
( , )
(n-1)- ..
,
/a[a-z]{2,4}/.exec("abcdefghi")
"abcde"
/a[a-z]{2,4}?/.exec("abcdefghi")
"abc".
/(aa|aabaac|ba|b|c)*/.exec("aabaac")
, ,
["aaba", "ba"]
- :
["aabaac", "aabaac"] ["aabaac", "c"]
,
( ). 10 15:
"aaaaaaaaaa, aaaaaaaaaaaaaaa".replace(/^(a+)\1*,\1+$/,"$1")
: "aaaaa".
4 ,
http://javascript.ru/ecma[14.03.09 12:52:12]
/(z)((a+)?(b+)?(c))*/.exec("zaacbbbcac")
["zaacbbbcac", "z", "ac", "a", undefined, "c"]
["zaacbbbcac", "z", "ac", "a", "bbb", "c"]
* ,
,
2, 3 4.
1 d ,
, ,
, .
, :
/(a*)*/.exec("b")
:
/(a*)b\1+/.exec("baaaac")
["b", ""]
15.10.2.6
Assertion :: ^ , - x,
:
1. e endIndex x.
2. e - true.
3. Multiline false - false.
4. Input[ e-1] - <LF>, <CR>, <LS> <PS> -
true.
5. false.
Assertion :: $ , - x,
:
http://javascript.ru/ecma[14.03.09 12:52:12]
1. e endIndex x.
2. e InputLength - true.
3. multiline false - false.
4. Input[ e] - <LF>, <CR>, <LS> <PS> -
true.
5. false.
Assertion :: \b
-, x, :
1. e endIndex x.
2. ( e-1), a.
3. ( e), b .
4. a true, b false - true.
5. a false, b true - true.
6. false.
Assertion :: \B
-, x, :
1. e endIndex x.
2. ( e-1), a.
3. ( e), b.
4. a true, b false - false.
5. a false, b true - false.
6. true.
e :
1. e == -1 e == InputLength - false.
2. c - Input[e].
3. c - ,
true.
a b c d e f g h i j k l m n o p q r s t u v w x y z
http://javascript.ru/ecma[14.03.09 12:52:12]
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 _
4. false.
15.10.2.7
::
:
1. , : min
( ) max.
2. : min , max true.
:: ?
:
1. , : min
( ) max.
2. : min , max false.
:: * 0 .
:: + 1 .
:: ? 0 1.
:: { }
:
1. i (. 7.8.3).
2. : i i.
:: { ,}
:
1. i .
2. i .
} :
::
1. i - .
2. j - .
3. : i j.
15.10.2.8
:: :
http://javascript.ru/ecma[14.03.09 12:52:12]
1. ch - , .
2. A - , ch .
3. (A , false) .
:: . :
1. A - <LF>, <CR>, <LS> <PS>.
2. (A , false) .
:: \ Escape
Escape .
:: :
1. , A invert .
2. (A, invert) .
:: ( ) :
1. , m.
2. parenIndex - ,
. , :: (
) , ,
:: ( ) .
3. -,
x c - :
1. - d ,
- y , :
1. cap - captures y .
2. xe endIndex x.
3. ye endIndex y .
4. s - , Input xe
() ye ( ).
5. cap [ parenIndex+1] s .
6. z - (ye, cap ).
7. c(z) .
2. m(x, d) . :: (?:
http://javascript.ru/ecma[14.03.09 12:52:12]
)
.
:: (?= ) :
1. , m.
2. -,
x c - :
1. d - ,
MatchResult.
2. m(x, d) , r.
3. r failure - failure.
4. y r.
5. cap - captures y .
6. xe endIndex x.
7. z - (xe, cap ).
8. c(z) .
:: (?! ) :
1. , m.
2. -,
x c - :
1. d - ,
MatchResult.
2. m(x, d) , r.
3. r failure - failure.
4. c(x) .
: A invert -
:
1. -,
x c - :
1. e endIndex x.
2. e == InputLength - failure.
http://javascript.ru/ecma[14.03.09 12:52:12]
3. c - Input[e].
4. cc (c).
5. invert true - 8.
6. A a, (a)==
cc - failure.
7. 9.
8. A a, (a)== cc failure.
9. cap - captures x.
10. y - (e+1, cap ).
11. c(y) .
-
ch :
1. IgnoreCase false - ch.
2. u ch , ,
String.prototype.toUpperCase ch .
3. u - x.
4. cu - u.
5. ch 128, cu 128 ch .
6. cu .
: ( )
,
. ( "\",
), ,
.
, (?: ).
(?= ) .
,
,
.
, .
, (?=
( Perl).
, ,
http://javascript.ru/ecma[14.03.09 12:52:12]
.
,
/(?=(a+))/.exec("baaabac")
b , ,
:
["", "aaa"]
, :
/(?=(a+))a*b\1/.exec("baaabac")
["aba", "a"]
["aaaba", "a"]
(?! ) .
,
.
.
,
.
undefined, ,
, . ,
/(.*?)a(?!(a+)b\2c)\2(.*)/.exec("baaabaac")
a,
n a, b, n a (
\2) c. \2
, undefined ,
, . :
["baaabaac", "ba", undefined, "abaac"]
- ,
.
, (,
"" (( u00DF) "SS"), .
,
ASCII, ASCII.
, , \u0131 \u017F
, /[a-z]/i ,
ASCII. , , /[^\W]/i
a, b,..., h, i s.
http://javascript.ru/ecma[14.03.09 12:52:12]
15.10.2.9 Escape
Escape :: Escape :
1. Escape, Escape E.
2. E - , 6.
3. ch - E.
4. A - , ch .
5. (A , false) .
6. E . n - .
7. n= 0 n> NCapturingParens - SyntaxError.
8. -,
x c - :
1. cap - captures x.
2. s cap[n] .
3. s undefined - c(x) .
4. e endIndex x.
5. len s .
6. f e + len .
7. f > InputLength - failure.
8. i 0 () len ( ) ,
(s[i])
(Input[e+i]), - failure.
9. y (f, cap ).
10. c(y) .
Escape :: Escape :
1. Escape , ch .
2. A - , ch .
3. (A , false) .
Escape :: Escape
:
1. Escape, A .
http://javascript.ru/ecma[14.03.09 12:52:12]
2. (A , false) .
: Escape- \,
n n-
(. 15.10.2.11). n
- . n
, n- undefined,
, .
15.10.2.10 Escape
Escape :: Escape
:
Escape
t
\u0009
\u000A
\u000B
\u000C
\u000D
( )
<HT>
<LF>
<VT>
<FF>
<CR>
Escape :: c
:
1. ch - , .
2. i - ch .
3. j - i 32.
4. j.
Escape
::
Escape
Escape (. 7.8.4)
.
Escape :: Escape
Escape (.
7.8.4) .
Escape :: Escape
, Escape .
15.10.2.11 Escape
Escape :: [
] :
1. i - .
http://javascript.ru/ecma[14.03.09 12:52:12]
2. i - Escape, <NUL> (
0000).
3. Escape, i.
" " 7.8.3.
: \ n,
0, escape- . n
. \0 NUL,
.
15.10.2.12 Escape
Escape :: d
, 0 9 .
Escape :: D
, , Escape :: d.
Escape :: s ,
, ( 7.2)
( 7.3).
Escape :: S
, , Escape :: s.
Escape :: w
, :
a b c d e f g h i j k l m n o p q r s t u v w x y z
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 _
Escape :: W
, , Escape :: w.
15.10.2.13
{^}] ]
:: [ [
false.
:: [ [^ ]
true.
15.10.2.14
:: []
.
http://javascript.ru/ecma[14.03.09 12:52:12]
::
.
15.10.2.15
::
.
::
1. , A .
2. , B .
3. A B .
:
::
1. , A .
2. , B .
3. , C .
4. (A, B) , D.
5. D C .
A B
:
1. A , B
- SyntaxError.
2. a - A .
3. b - B .
4. i - a.
5. j - b .
6. I > j - SyntaxError.
7. , i j .
15.10.2.16
::
.
http://javascript.ru/ecma[14.03.09 12:52:12]
::
:
1. , A .
2. , B .
3. A B .
::
:
1. , A .
2. , B .
3. , C .
4. (A, B) , D.
5. D C .
:
/ , .
.
(, \w)
.
,
, .
, , /[E-F]/ i E, F, e f,
/[E-f]/ i ASCII ,
[, \, ], ^, _ `.
- .
, ,
.
15.10.2.17
:: - ,
-.
::
.
15.10.2.18
:: \ ] ,
.
http://javascript.ru/ecma[14.03.09 12:52:12]
:: \ Escape
Escape .
15.10.2.19 Escape
Escape :: Escape
:
1. Escape, Escape E.
2. E - SyntaxError.
3. ch - E.
4. , ch .
Escape :: b ,
<BS> ( 0008).
Escape :: Escape
Escape ,
,
.
Escape :: Escape
Escape .
: escape, , \b,
\B . \b backspace, \B
.
.
15.10.3 RegExp
15.10.3.1 RegExp(pattern, flags)
pattern R , [[Class]] "RegExp" ,
flags undefined - R . RegExp (.
15.10.4.1), pattern flags , ,
.
15.10.4 RegExp
RegExp new , , ..
.
15.10.4.1 new RegExp(pattern, flags)
pattern R , [[Class]] "RegExp" ,
flags undefined, P pattern , R , F flags, R . pattern R ,
[[Class]] "RegExp" , flags undefined -
TypeError. P , pattern
undefined, ToString( pattern ) , F - , flags
http://javascript.ru/ecma[14.03.09 12:52:12]
RegExp "Object".
- RegExp valueOf,
valueOf - Object.
, - RegExp,
" RegExp" this,
. this ,
[[Class]] "RegExp" , TypeError.
15.10.6.1 RegExp.prototype.constructor
RegExp.prototype.constructor
RegExp.
15.10.6.2 RegExp.prototype.exec(string)
string
Array, , null,
.
ToString( string )
:
1. S - ToString( string ).
2. length - S.
3. lastIndex - lastIndex property.
4. i - ToInteger( lastIndex).
5. global false - i =0.
6. i <0 i > length , lastIndex 0 null .
7. [[Match]], S i. [[Match]] failure -
8. r 10.
8. i = i + 1.
9. 6.
10. e - endIndex r.
11. global true - lastIndex e.
12. n - captures r. ( ,
NCapturingParens 15.10.2.1.)
13. :
index S,
-.
http://javascript.ru/ecma[14.03.09 12:52:12]
input S.
length n +1.
0 - (. . S i
e ).
i, , i >0 i <= n, - ToString( i)
i- captures r.
15.10.6.3 RegExp.prototype.test(string)
RegExp.prototype.exec(string) != null .
15.10.6.4 RegExp.prototype.toString()
src - , . src
source ,
RegExp. src RegExp
-
.
, "/", src
"/", "g" , global true, "i" ,
ignoreCase true, "m" , multiline true.
toString
src
, RegExp,
src. , new RegExp("/"),
src "/" "\/" .
( "/\//")
toString
.
15.10.7 RegExp
RegExp , ,
[[Prototype]], :
15.10.7.1 source
source ,
. { DontEnum,
DontDelete, ReadOnly }.
15.10.7.2 global
global Boolean ,
"g" . { DontEnum, DontDelete, ReadOnly
}.
15.10.7.3 ignoreCase
ignoreCase Boolean ,
"i" . { DontEnum, DontDelete, ReadOnly
}.
http://javascript.ru/ecma[14.03.09 12:52:12]
15.10.7.4 multiline
multiline Boolean ,
"m" . { DontEnum, DontDelete, ReadOnly
}.
15.10.7.5 lastIndex
lastIndex , ,
. {
DontEnum, DontDelete }.
15.11 Error
Error ("") ,
. Error
-.
15.11.1 Error
Error , ,
Error. , Error(...)
new Error(...) , .
15.11.1.1 Error (message)
[[Prototype]]
- Error, .. ,
Error.prototype (. 15.11.3.1).
[[Class]] "Error".
message undefined, message
ToString( message).
15.11.2 Error
Error new , , ..
.
15.11.2.1 new Error (message)
[[Prototype]]
- Error, .. ,
Error.prototype (. 15.11.3.1).
[[Class]] Error "Error".
message undefined, message
ToString( message).
15.11.3 Error
http://javascript.ru/ecma[14.03.09 12:52:12]
Error
(.
, . .
15.4.2.2, 15.4.5.1, 15.7.4.5, 15.7.4.6 15.7.4.7.
15.11.6.3 ReferenceError
, . . 8.7.1
8.7.2.
15.11.6.4 SyntaxError
(). . 15.1.2.1, 15.3.2.1,
15.10.2.5, 15.10.2.9, 15.10.2.15, 15.10.2.19 15.10.4.1.
15.11.6.5 TypeError
, . .
8.6.2, 8.6.2.6, 9.9, 11.2.2, 11.2.3, 11.8.6, 11.8.7, 15.3.4.2, 15.3.4.3, 15.3.4.4, 15.3.5.3,
15.4.4.2, 15.4.4.3, 15.5.4.2, 15.5.4.3, 15.6.4, 15.6.4.2, 15.6.4.3, 15.7.4, 15.7.4.2,
15.7.4.4, 15.9.5, 15.9.5.9, 15.9.5.27, 15.10.4.1 15.10.6.
15.1.6.6 URIError
, , URI,
. . 15.1.3.
15.11.7 NativeError
ECMAScript ,
NativeError, 15.11.6.
,
NativeError,
name - message
-.
NativeError
- 15.11.6.
15.11.7.1 NativeError Constructors Called as Functions
NativeError , ,
. ,
.
15.11.7.2 NativeError (message)
[[Prototype]] -
. [[Class]]
"Error".
message undefined, message
ToString( message).
15.11.7.3 NativeError
http://javascript.ru/ecma[14.03.09 12:52:12]
NativeError new ,
, .. .
15.11.7.4 New NativeError (message)
[[Prototype]] -
NativeError.
[[Class]]
"Error".
message undefined, message
ToString( message).
15.11.7.5 NativeError
[[Prototype]] NativeError Function (. 15.3.4).
length ( 1),
NativeError :
15.11.7.6 NativeError. prototype
NativeError.prototype - NativeError (.
15.11.7.7). NativeError .
{ DontEnum, DontDelete, ReadOnly }.
15.11.7.7 - NativeError
- NativeError Error ( [[Class]]
"Error").
[[Prototype]] - NativeError
- Error (15.11.4).
15.11.7.8 NativeError.prototype.constructor
constructor -
NativeError - NativeError (15.11.7).
15.11.7.9 NativeError.prototype.name
name - NativeError
(, NativeError).
15.11.7.10 NativeError.prototype.message
name - NativeError
.
NativeError
- Error .
http://javascript.ru/ecma[14.03.09 12:52:12]
toString ,
15.11.7.11 NativeError
NativeError , ,
- Error.
16
,
.
,
.
eval- eval ,
.
, ,
:
return, break continue .
eval - , .
.
PutValue ,
(, 3=4 ).
,
,
.
,
.
:
.
, ( eval ,
Function
RegExp), SyntaxError,
, ,
SyntaxError,
.
, , ,
, .
(,
) ,
( ReferenceError).
EvalError.
EvalError,
http://javascript.ru/ecma[14.03.09 12:52:12]
/ eval .
toFixed, toExponential toPrecision
, RangeError, ,
fractionDigits precision .
eval
A
A
()
A.1
. 6
::
Unicode
. 7
::
. 7
::
. 7.2
::
<TAB>
<VT>
<FF>
<SP>
<NBSP>
<USP>
. 7.3
::
<LF>
<CR>
<LS>
<PS>
. 7.4
::
http://javascript.ru/ecma[14.03.09 12:52:12]
. 7.4
::
/* */
. 7.4
::
*
. 7.4
::
*
. 7.4
::
*
. 7.4
::
/ *
. 7.4
::
//
. 7.4
::
. 7.4
::
. 7.5
::
. 7.5.1
::
Null
http://javascript.ru/ecma[14.03.09 12:52:12]
. 7.5.2
::
break else new var case finally return void catch for switch while continue function
this with default if throw delete in try do instanceof typeof
. 7.5.3
::
abstract enum int short boolean export interface static byte extends long super char
final native synchronized class float package throws const goto private transient
debugger implements protected volatile double import public
. 7.6
::
. 7.6
::
. 7.6
::
$
_
\ Escape
. 7.6
::
\ Escape
. 7.6
: "- (Mn)"
" (Mc)"
. 7.6
" (Nd)"
. 7.6
http://javascript.ru/ecma[14.03.09 12:52:12]
" (Pc)"
. 7.6
::
0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
. 7.7
::
{ } ( ) [ ]
. ; , < > <=
>= == != === !==
+ - * % ++ -<< >> >>> & | ^
! ~ && || ? :
= += -= *= %= <<=
>>= >>>= &= |= ^=
. 7.7
::
/
/=
. 7.8
::
Null
. 7.8.1
Null ::
null
. 7.8.2
::
true
false
. 7.8.3
::
. 7.8.3
::
.
.
. 7.8.3
::
http://javascript.ru/ecma[14.03.09 12:52:12]
. 7.8.3
::
. 7.8.3
::
0 1 2 3 4 5 6 7 8 9
. 7.8.3
::
e E
. 7.8.3
::
+
-
. 7.8.3
::
0x
0X
. 7.8.4
::
" "
' '
. 7.8.4
::
. 7.8.4
::
. 7.8.4
::
- " - \
\ Escape
. 7.8.4
SingleStringCharacter ::
- ' - \
\ Escape
http://javascript.ru/ecma[14.03.09 12:52:12]
. 7.8.4
Escape ::
Escape
0 [ ]
Escape
Escape
. 7.8.4
Escape ::
Escape
Escape
. 7.8.4
Escape ::
' " \ b f n r t v
. 7.8.4
Escape ::
Escape
x
u
. 7.8.4
Escape ::
x
. 7.8.4
Escape ::
u
. 7.8.5
::
/ /
. 7.8.5
::
. 7.8.5
::
[]
. 7.8.5
::
* \ /
. 7.8.5
::
http://javascript.ru/ecma[14.03.09 12:52:12]
\ /
. 7.8.5
::
\
. 7.8.5
::
. 7.8.5
::
[]
A.2
. 9.3.1
:::
. 9.3.1
:::
. 9.3.1
:::
<TAB>
<SP>
<NBSP>
<FF>
<VT>
<CR>
<LF>
<LS>
<PS>
<USP>
. 9.3.1
:::
. 9.3.1
:::
+
-
. 9.3.1
http://javascript.ru/ecma[14.03.09 12:52:12]
:::
Infinity
.
.
. 9.3.1
:::
. 9.3.1
:::
0 1 2 3 4 5 6 7 8 9
. 9.3.1
:::
. 9.3.1
:::
e E
. 9.3.1
:::
+
-
. 9.3.1
:::
0x
0X
. 9.3.1
:::
0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
A.3
. 11.1
:
this
( )
. 11.1.4
:
http://javascript.ru/ecma[14.03.09 12:52:12]
[
[
[
]
]
,
. 11.1.4
:
,
. 11.1.4
:
,
,
. 11.1.5
:
{}
{ }
. 11.1.5
:
:
, :
. 11.1.5
:
. 11.2
:
[ ]
.
new
. 11.2
New :
new New
. 11.2
Call :
Call
Call [ ]
Call .
. 11.2
http://javascript.ru/ecma[14.03.09 12:52:12]
()
( )
. 11.2
:
,
. 11.2
:
New
Call
. 11.3
:
[ ] ++
[ ] -. 11.4
:
delete
void
typeof
++
--
+
-
~
!
. 11.5
:
*
/
%
. 11.6
:
+
-
. 11.7
:
<<
>>
>>>
http://javascript.ru/ecma[14.03.09 12:52:12]
. 11.8
:
<
>
<=
>=
instanceof
in
. 11.8
In :
In
In
In
In
In
<
>
<=
>=
instanceof
. 11.9
:
==
!=
===
!==
. 11.9
In :
In
In == In
In != In
In === In
In !== In
. 11.10
:
&
. 11.10
In :
In
In & In
. 11.10
:
^
. 11.10
http://javascript.ru/ecma[14.03.09 12:52:12]
In :
In
In
In
. 11.10
:
|
. 11.10
In :
In
In | In
. 11.11
:
&&
. 11.11
In :
In
In && In
. 11.11
:
||
. 11.11
In :
In
In || In
. 11.12
:
? :
. 11.12
In :
In
In ? In :
In
. 11.13
:
. 11.13
In :
http://javascript.ru/ecma[14.03.09 12:52:12]
In
In
. 11.13
:
. 11.14
:
,
. 11.14
In :
In
In , In
A.4
. 12
:
If
Continue
Break
Return
With
Switch
Throw
Try
. 12.1
:
{ }
. 12.1
:
. 12.2
:
var ;
. 12.2
:
http://javascript.ru/ecma[14.03.09 12:52:12]
. 12.2
In :
In
In , In
. 12.2
:
. 12.2
In :
In
. 12.2
:
=
. 12.2
In :
= In
. 12.3
:
;
. 12.4
:
[ { {, function }] ;
. 12.5
If :
if ( ) else
if ( )
. 12.6
:
do while ( );
while ( )
for (In ; ; )
for (var In; ; )
for ( in )
for (var In in )
. 12.7
Continue :
continue [ ] ;
. 12.8
http://javascript.ru/ecma[14.03.09 12:52:12]
Break :
break [ ]
. 12.9
Return :
return [ ] ;
. 12.10
With :
with ( )
. 12.11
Switch :
switch ( ) Case
. 12.11
Case :
{ Case }
{ Case Case }
. 12.11
Case :
Case
Case Case
. 12.11
Case :
case :
. 12.11
:
default :
. 12.12
:
:
. 12.13
ThrowStatement :
throw [ ] ;
. 12.14
Try :
try Catch
try Finally
try Catch Finally
. 12.14
Catch :
catch ( )
http://javascript.ru/ecma[14.03.09 12:52:12]
. 12.14
Finally :
finally
A.5
. 13
:
function ( ){ }
. 13
:
function ( ){ }
. 13
:
,
. 13
:
. 14
:
. 14
:
. 14
:
A.6 URI
. 15.1.3
uri :::
uri
. 15.1.3
Uri :::
Uri Uri
. 15.1.3
Uri :::
uri
uri
uri
http://javascript.ru/ecma[14.03.09 12:52:12]
. 15.1.3
uri :::
; / ? : @ & = + $ ,
. 15.1.3
uri :::
uri
uri
. 15.1.3
uri :::
%
. 15.1.3
uri :::
a b c d e f g h i j k l m n o p q r s t u v w x y z
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
. 15.1.3
uri :::
- _ . ! ~ * ' ( )
A.7
. 15.10.1
::
. 15.10.1
::
|
. 15.10.1
::
[]
. 15.10.1
::
. 15.10.1
::
^
$
\ b
\ B
http://javascript.ru/ecma[14.03.09 12:52:12]
. 15.10.1
::
?
. 15.10.1
::
*
+
?
{
{
{
}
,}
, }
. 15.10.1
::
Escape
( )
(?:
(?=
(?!
\
)
)
)
. 15.10.1
:: :
^ $ \ . * + ? ( ) [ ] { } |
. 15.10.1
Escape ::
Escape
Escape
Escape
. 15.10.1
Escape ::
Escape
c
Escape
Escape
Escape
. 15.10.1
Escape ::
f n r t v
. 15.10.1
::
a b c d e f g h i j k l m n o p q r s t u v w x y z
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
http://javascript.ru/ecma[14.03.09 12:52:12]
. 15.10.1
Escape ::
. 15.10.1
Escape ::
[
. 15.10.1
::
[ [ {^}] ]
[^ ]
. 15.10.1
::
[]
. 15.10.1
::
-
. 15.10.1
::
-
. 15.10.1
::
. 15.10.1
::
\ ] \ Escape
. 15.10.1
Escape ::
Escape
b
Escape
Escape
B
B
http://javascript.ru/ecma[14.03.09 12:52:12]
()
B.1
ECMAScript
escape-.
ECMAScript.
escape-
ECMAScript.
B.1.1
7.8.3
:
::
::
0 1 2 3 4 5 6 7
::
0
::
.
:: 0 0.
:: 1 1.
:: 2 2.
:: 3 3.
:: 4 4.
:: 5 5.
:: 6 6.
:: 7 7.
:: 0
.
::
(
8) .
B.1.2
7.8.4
:
http://javascript.ru/ecma[14.03.09 12:52:12]
Escape ::
Escape
Escape
Escape
Escape
Escape ::
[ ]
[ ]
::
0 1 2 3
::
4 5 6 7
Escape :: Escape
Escape .
Escape :: [
] ,
.
Escape ::
[ ] ,
( , 8) .
Escape ::
, (
, 8) .
Escape ::
, (
, 64 (.., 8 2 ) ), ( ,
8) .
:: 0 0.
:: 1 1.
:: 2 2.
:: 3 3.
:: 4 4.
:: 5 5.
:: 6 6.
:: 7 7.
B.2
ECMAScript
.
, .
http://javascript.ru/ecma[14.03.09 12:52:12]
(6)
69
" -
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@*_+-./
13.
xy
12. 14.
13. S - , (6).
14. R - ,
R S.
15. k 1. 16. 5.
, RFC1738,
RFC1738 .
http://javascript.ru/ecma[14.03.09 12:52:12]
17. k 2.
18. R - ,
R c .
19. k 1.
20. 5.
http://javascript.ru/ecma[14.03.09 12:52:12]
substr . ,
this String. ,
.
B.2.4 Date.prototype.getYear()
" 2000".
getFullYear,
getYear , :
1. t - .
2. t NaN - NaN.
3. (( t))-1900.
B.2.5 Date.prototype.setYear(year)
" 2000".
http://javascript.ru/ecma[14.03.09 12:52:12]
setFullYear,
setYear year,
:
1. t - ( ).
NaN, t +0.
2. ToNumber( year).
3. (2) NaN, [[Value]] this
NaN NaN.
4. (2) NaN 0 < = ToInteger((2)) <= 99, (4)
ToInteger((2)) + 1900. (4) (2).
5. ((4), (t), (t)).
6. UTC(((5), (t))).
7. [[Value]] this ((6)).
8. [[Value]] this.
B.2.6 Date.prototype.toGMTString()
toUTCString. toGMTString
. ECMAScript
toUTCString.
Function, Date.prototype.toGMTString
Function, Date.prototype.toUTCString.
,
ECMAScript.
InputElementDiv
InputElementRegExp
MultiLineComment
RegExp
Pattern
Program
Expression
Statement
WithStatement
With
AssignmentExpression
ArgumentList
Identifier
Initialiser
ExpressionNoIn In
DecimalDigit
DecimalDigits
LookaheadExample
LineTerminator
NonZeroDigit
IdentifierName
SourceCharacter
WhiteSpace
Comment
http://javascript.ru/ecma[14.03.09 12:52:12]
SingleLineComment
MultiLineCommentChars
MultiLineNotAsteriskChar
PostAsteriskCommentChars
MultiLineNotForwardSlashOrAsteriskChar
SingleLineCommentChars
SingleLineCommentChar
Token
Punctuator
NumericLiteral
StringLiteral
ReservedWord
Keyword
FutureReservedWord
NullLiteral
Null
BooleanLiteral
UnicodeEscapeSequence
Escape
IdentifierStart
IdentifierPart
UnicodeLetter
UnicodeCombiningMark
UnicodeDigit
UnicodeConnectorPunctuation
HexDigit
DivPunctuator
Literal
DecimalLiteral
HexIntegerLiteral
DecimalIntegerLiteral
ExponentPart
SignedInteger
ExponentIndicator
DoubleStringCharacters
SingleStringCharacters
DoubleStringCharacter
SingleStringCharacter
EscapeSequence Escape
CharacterEscapeSequence Escape
HexEscapeSequence
Escape
SingleEscapeCharacter
Escape
NonEscapeCharacter
Escape
EscapeCharacter Escape
RegularExpressionBody
RegularExpressionFlags
RegularExpressionLiteral
RegularExpressionFirstChar
RegularExpressionChars
RegularExpressionChar
NonTerminator
BackslashSequence
PostfixExpression
LeftHandSideExpression
ContinueStatement
Continue
BreakStatement Break
ThrowStatement Throw
ReturnStatement Return
PropertyName
StringNumericLiteral
StrWhiteSpace
StrNumericLiteral
StrWhiteSpaceChar
StrDecimalLiteral
StrUnsignedDecimalLiteral
FunctionDeclaration
FunctionExpression
FunctionBody
FormalParameterList
VariableDeclaration
VariableDeclarationNoIn In
PrimaryExpression
ArrayLiteral
ObjectLiteral
Elision
ElementList
PropertyNameAndValueList
MemberExpression
Arguments
NewExpression
New
CallExpression Call
UnaryExpression
MultiplicativeExpression
http://javascript.ru/ecma[14.03.09 12:52:12]
AdditiveExpression
ShiftExpression
RelationalExpression
RelationalExpressionNoIn
In
EqualityExpression
EqualityExpressionNoIn In
BitwiseANDExpression
BitwiseANDExpressionNoIn
In
BitwiseXORExpression
BitwiseXORExpressionNoIn
In
BitwiseORExpression
BitwiseORExpressionNoIn In
LogicalANDExpression
LogicalANDExpressionNoIn
In
LogicalORExpression
LogicalORExpressionNoIn In
ConditionalExpression
ConditionalExpressionNoIn
In
AssignmentExpressionNoIn
In
AssignmentOperator
Block
VariableStatement
EmptyStatement
ExpressionStatement
IfStatement
If
IterationStatement
LabelledStatement
SwitchStatement Switch
TryStatement
Try
StatementList
VariableDeclarationList
VariableDeclarationListNoIn
In
InitialiserNoIn In
EmptyStatement
CaseBlock
Case
CaseClauses
Case
CaseClause
Case
DefaultClause
Catch
Catch
Finally Finally
SourceElements
Scope
SourceElement
uri
uri
uriCharacters
Uri
uriCharacter
Uri
uriReserved
uri
uriUnescaped
uri
uriEscaped
uri
uriAlpha
uri
uriMark uri
Day
msPerDay
TimeWithinDay
DaysInYear
DayFromYear
TimeFromYear
YearFromTime
InLeapYear
MonthFromTime
DateFromTime
DayWithinYear
WeekDay
DaylightSavingTA
LocalTime
HourFromTime
msPerHour
HoursPerDay
MinFromTime
msPerMinute
MinutesPerHour
SecFromTime
msPerSecond
SecondsPerMinute
msFromTime
MakeTime
MakeDay
MakeDate
TimeClip
Disjunction
Alternative
http://javascript.ru/ecma[14.03.09 12:52:12]
Term
Assertion
Atom
Quantifier
QuantifierPrefix
PatternCharacter
AtomEscape
Escape
CharacterClass
DecimalEscape
Escape
CharacterEscape Escape
CharacterClassEscape
Escape
ControlEscape
Escape
ControlLetter
IdentityEscape Escape
ClassRanges
NonemptyClassRanges
ClassAtom
NonemptyClassRangesNoDash
ClassAtomNoDash
ClassEscape
Escape
CharSet
State
endIndex
captures
Continuation
Matcher
AssertionTester
EscapeValue
Escape
RepeatMatcher
IsWordChar
CharacterSetMatcher
Canonicalize
CharacterRange
OctalIntegerLiteral
OctalDigit
OctalEscapeSequence
Escape
ZeroToThree
FourToSeven
opt
[lookahead
set]
[
]
Result(n)
(n)
Type(x) (x)
http://javascript.ru/ecma
http://javascript.ru/ecma[14.03.09 12:52:12]