982
Дэвид Флэнаган 5е издание Включает Ajax и DOM Создание активных вебстраниц JavaScript Подробное руководство

JavaScript Дэвид Флэнаган (PDF) - Главнаяkharchuk.ru/JavaScript.pdf · Эта книга посвящается всем, кто учит жить мирно и

  • Upload
    ledien

  • View
    252

  • Download
    8

Embed Size (px)

Citation preview

  • www.symbol.ru

    9 785932 861035

    ISBN10: 5932861037ISBN13: 9785932861035

    (812) 3245353, (095) 9458100 :

    :

    5

    Ajax DO

    M

    JavaScript

    JavaScript

    JavaScript , HTML. (Document Object Model, DOM), , DHTML JavaScript

    . JavaScript C, C++ Java, . JavaScript , , .

    JavaScript. JavaScript, , . , , , , cookies DHTML. IV V API JavaScript, API APIW3C DOM, , , , , , API.

    JavaScript JavaScript 1.5 (ECMAScript v3). W3C DOM (Level 1 Level 2), DOM Level 0.

    , JavaScript. , , , Internet Explorer 6, Netscape 6 Mozilla. , JavaScript . . , JavaScript, .

    JavaScript .

    (Brendan Eich), JavaScript

    JavaScript.

    Cover_javascript_new.qxd 22.02.2008 12:43 Page 1

  • David Flanagan

    The Definitive Guide

    Fifth Edition

  • 2008

  • JavaScript. , 5

    . . . . . . . .

    .JavaScript. . . . : ,2008. 992 ., .ISBN10: 5932861037ISBN13: 9785932861035

    JavaScript. . HTTP Ajax, XML, , JavaScript, , , , Flash JavaScript Java. I JavaScript. II , . , HTML, DHTML, , Ajax, XPath XSLT XML, Ajax. III JavaScript (, , , , , , JavaScript 1.5 ECMAScript v3). IV JavaScript (API , DOM API Level 2 : XMLHttpRequest ).

    ISBN10: 5932861037ISBN13: 9785932861035ISBN 0596101996 ()

    , 2008Authorized translation of the English edition 2006 OReilly Media, Inc. This translation is published and sold by permission of OReilly Media, Inc., the owner of allrights to publish and sell the same. , . , , .

    . 199034, , 16 , 7,. (812) 3245353, www.symbol.ru. N 000054 25.12.98.

    00593, 2; 953000 .

    14.02.2008. 70100 1/16 . . 62 . . 2000 . N

    199034, , 9 , 12.

  • , .

  • . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    1. JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    1.1. JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211.2. JavaScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211.3. JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231.4. JavaScript. . . . . . . . . . . . . . . . . . . . . . . . . . 281.5. JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    I. JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    2.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . 342.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342.5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352.6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362.7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362.8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

    3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

    3.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503.5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513.6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533.7. null. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553.8. undefined . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553.9. Date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563.10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563.11. Error. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573.12. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573.13. . . . . . . . . . . . . . . . . . 58

  • 8

    3.14. . . . . . . . . . . 603.15. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

    4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

    4.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714.5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734.6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744.7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

    5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

    5.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 785.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835.5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865.6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885.7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 895.8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 915.9. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 925.10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

    6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

    6.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 996.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1006.3. if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1016.4. else if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1026.5. switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1036.6. while. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1056.7. do/while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1066.8. for. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1076.9. for/in . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1086.10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1096.11. break . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1106.12. continue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1116.13. var . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1126.14. function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1136.15. return. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1146.16. throw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1156.17. try/catch/finally . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1166.18. with . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1186.19. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

  • 9

    6.20. JavaScript. . . . . . . . . . . . . . . . . . . . . . . . 119

    7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

    7.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1227.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1237.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1257.4. Object . . . . . . . . . . . . . . . . . . 1277.5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1297.6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1307.7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1337.8. , . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138

    8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

    8.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1398.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1438.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1488.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1508.5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1528.6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1528.7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1548.8. . . . . . . . . . . . . . . . . . . . . . . . . 1568.9. Function() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

    9. , . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

    9.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1659.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1669.3. JavaScript . . . . . . . . . . . . . . . . . . . . . . 1729.4. Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1789.5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1829.6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1869.7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1899.8. : defineClass() . . . . . . . . . . . . . . . . . . . . . 194

    10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

    10.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . 19910.2. . . . . . . . . . . . . . . . . . . . . . . . . . . 20410.3. . . . . . . . . . . . . . . . . . . . . . . . 208

    11. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214

    11.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . 21411.2. String . . . . . . . . . . . . . . . . . . . . 22311.3. RegExp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226

  • 10

    12. Java . . . . . . . . . . . . . . . . . . . . . 229

    12.1. JavaScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22912.2. Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237

    II. JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249

    13. JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251

    13.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25213.2. JavaScript HTML . . . . . . . . . . . . . . . . . 25813.3. HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26413.4. JavaScript URL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26613.5. JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26813.6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27313.7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27913.8. JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28013.9. JavaScript . . . . . . . . . . . . . 285

    14. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287

    14.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28814.2. Location History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28914.3. Window, Screen Navigator . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29114.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29714.5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30214.6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30314.7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30414.8. . . . . . . . . . . . . . . . . . . . . . . . 30614.9. : . . . . . . . . . . . . . . . . . . . . . . . . . . . 311

    15. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314

    15.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . 31515.2. Document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31715.3. DOM:

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31915.4. W3C DOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32315.5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33415.6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33515.7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33915.8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34315.9. : . . . . . . . . . . . . . . . . . . . . . 35115.10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35615.11. IE 4 DOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357

  • 11

    16. CSS DHTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360

    16.1. CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36116.2. CSS DHTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37016.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38616.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39516.5. CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39616.6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397

    17. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403

    17.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40417.2. DOM Level 2 . . . . . . . 41417.3. Internet Explorer . . . . . . . . . . . . . . . . . . . . . 42517.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43517.5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44017.6. onload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44917.7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450

    18. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453

    18.1. Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45418.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45518.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45918.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467

    19. Cookies . . . . . . . 472

    19.1. cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47219.2. cookie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47519.3. cookies. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47619.4. cookie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47719.5. cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48119.6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493

    20. HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494

    20.1. XMLHttpRequest . . . . . . . . . . . . . . . . . . . . . . . . 49520.2. XMLHttpRequest. . . . . . . . . . . . . . . . . 50220.3. Ajax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50920.4. HTTP . . . . . . 516

    21. JavaScript XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518

    21.1. XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51821.2. XML c DOM API . . . . . . . . . . . 52421.3. XML XSLT . . . . . . . . . . . . . . . . 52821.4. XML

    XPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531

  • 12

    21.5. XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53621.6. HTML XML. . . 53721.7. XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54021.8. E4X: EcmaScript XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543

    22. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546

    22.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54722.2. CSS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55522.3. SVG . . . . . . . . . . . . . . . . . . . . . . 56222.4. VML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56922.5. . . . . . . . . . . . . . . . . . . . . . 57222.6. Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57622.7. Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581

    23. Java Flash . . . . . . . . . . . . . . . . . . . . 588

    23.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59023.2. Java . . . . . . . . . . . . . . . . . . . . . . . . . . 59223.3. JavaScript Java . . . . . . . . . . . . . . . . . 59323.4. Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59723.5. Flash 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605

    III. JavaScript . . . . . . . . . . . . . . . . . . . . . 607

    IV. JavaScript. . . . . . . . . . . . . . . . . . 721

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 946

  • JavaScript. (Document Object Model, DOM), (Application Programming Interface, API) JavaScript, , , , . , (JavaScript 1.5), .

    JavaScript . JavaScript , HTTP, XML . JavaScript , . Ajax Web 2.0.

    , JavaScript, 8, ; , . 9. 10 , , . , 12 , JavaScript Java. , JavaScript Java 6, JavaScript Java .

    , JavaScript, ( 0) DOM W3C. DOM , , . ; :

    19 Cookies cookies , .

  • 14

    20 HTTP , HTTP , XMLHttpRequest, Ajax .

    21 JavaScript XML , JavaScript , , , , , XML. , JavaScript, E4X.

    22 JavaScript. , . , SVG, VML, Flash Java.

    23 Java Flash Flash Java. , Flash Java.

    III JavaScript. , API. 4 , .

    , (DOM API), JavaScript. , JavaScript. Document , HTMLDocument . DOM, , . , NodeIterator , . , DOM JavaScript, . , getComputedStyle() AbstractView, Window, . JavaScript, , AbstractView, . , JavaScript, .

    1 JavaScript. . , 1, JavaScript. 2 6 , , . . , :

  • 15

    2 .

    3 , JavaScript.

    4 , , .

    5 JavaScript , . JavaScript Java, , , C C++,, , .

    6 JavaScript. , C, C++ Java, , .

    . JavaScript, , , C Java. JavaScript, .

    7 JavaScript.

    8 , , , JavaScript.

    9 , JavaScript. , . , JavaScript.

    10 , JavaScript, , .

    11 , JavaScript .

    12 Java JavaScript Java , JavaScript, Java, Java. , Java.

    II JavaScript . JavaScript:

    13 JavaScript JavaScript . JavaScript .

  • 16

    14 JavaScript Window , .

    15 Document , JavaScript , . .

    16 CSS DHTML JavaScript CSS. , JavaScript , HTML, , DHTML.

    17 , , .

    18 , HTML . 15, , .

    , :

    19 Cookies . , HTTP cookies Internet Explorer Flash.

    20 HTTP , HTTP JavaScript, XMLHttpRequest . , Ajax.

    21 JavaScript XML , JavaScript , , , XML, .

    22 JavaScript, . , SVG (Scalable Vector Graphics ) VML(Vector Markup Language ), Flash Java.

    23 Java Flash , JavaScript Java Flash. , , JavaScript Java Flash.

    JavaScript. , .

  • 17

    :

    . , , FTP, , .

    JavaScript,HTML , .

    , .

    , .

    , , OfficinaSansC.

    . . , . , , . OReilly. . .

    , . , ISBN. : JavaScript: The Definitive Guide, by David Flanagan. Copyright 2006 OReilly Media, Inc., 9780596101992.

    [email protected].

    , , :

  • 18

    OReilly Media1005 Gravenstein Highway NorthSebastopol, CA 95472(800) 9989938 ( )(707) 8290515 ()(707) 8290104 ()

    , :

    http://www.oreilly.com/catalog/jscript5

    , , , :

    http://www.davidflanagan.com/javascript5

    :

    [email protected]

    , , OReilly :

    http://www.oreilly.com

    Safari Enabled Safari Enabled, , OReilly Network Safari Bookshelf.

    Safari , . , , , , . http://safari.oreilly.com.

    (Brendan Eich) Mozilla JavaScript. JavaScript JavaScript , , . , .

    , . c (Aristotle Pagatzis) (http://plasmasturm.org) , , . . (Douglas Crockford) (http://www.crockford.com) . (Norris Boyd), Rhino JavaScript, ,

  • 19

    JavaScript Java. (PeterPaulKoch) (http://www.quirksmode.org), (Christian Heilmann)(http://www.wait'till'i.com) (Ken Cooper) , Ajax. (Todd Ditchendorf) (http://www.ditchnet.org) (Geoff Stearns) (http://blog.deconcept.com) , . , , Flash ActionScript. , (Sanders Kleinfeld) , . . , . , , .

    . (Waldermar Horwat) Netscape JavaScript 1.5. W3C DOM (Philippe Le Hegaret) W3C, (PeterPaul Koch), (DylanSchiemann) (Jeff Yates). (Joseph Kesselman) IBM Research , , W3C DOM.

    , (Vidur Apparao) Netscape, (HermanVenter) Microsoft, JavaScript (Jay Hodges) (Angelo Sirigos). (DanShafer) CNET Builder.com . , . (Norris Boyd) (Scott Furman) Netscape, (Scott Issacs) Microsoft , DOM. , (Dr. Tankred Hirschmann) JavaScript 1.2.

    (Nick Thompson) (Richard Yaker) Netscape, (Dr. Shon Katzenberger), (Larry Sullivan) . (Dave C. Mitchell) Microsoft, (Lynn Rollins) R&B Communications. (NeilBerkman) Bay Networks, (Andrew Schulman) (Terry Allen) OReilly & Associates.

    , . (Deb Cameron) , . (Paula Ferguson) . (Frank Willison) , .

    , .

    http://www.davidflanagan.com

    2006

  • JavaScript

    JavaScript . JavaScript C, C++ Java , if, while &&. . JavaScript , . . . JavaScript . Perl, C C++ Java. JavaScript , Self, C++ Java. Perl, JavaScript , , , Perl.

    JavaScript , , . , .

    JavaScript , , , . JavaScript , HTML . , JavaScript, , , .

    JavaScript , . JavaScript , , , . JavaScript , JavaScript.

  • 1.1. JavaScript 21

    JavaScript , . , JavaScript .

    1.1. JavaScript JavaScript . JavaScript, , .

    1.1.1. JavaScript Java JavaScript , Java, , Sun Microsystems. , . ( LiveScript JavaScript ). JavaScript Java ( . 12 23).

    1.1.2. JavaScript JavaScript , , , , , . , JavaScript , . JavaScript , .

    JavaScript , , , , . , JavaScript , , . JavaScript, . JavaScript, , .

    1.2. JavaScript , JavaScript . , .

  • 22 1. JavaScript

    (European Computer Manufacturers Association, ECMA).1 JavaScript 1.5 Netscape Mozilla Foundation, Jscript 5.5 Microsoft. , Netscape 4.5 Internet Explorer 4, . , .

    , ECMA262 ECMAScript. , . JavaScript , Netscape Mozilla Foundation. JavaScript.

    JavaScript . Firefox 1.5, MozillaFoundation, JavaScript 1.6. () , 7.7.10, E4X, .

    ECMA262, JavaScript, ECMA , JavaScript, ECMA357. JavaScript, E4X, ECMAScript forXML. XML , XML. E4X JavaScript 1.6 Firefox 1.5. E4X, 21 .

    ECMA262, JavaScript 2.0. , . JavaScript 2.0. , , MicrosoftJScript.NET, ActionScript 2.0 ActionScript 3.0, Adobe ( Macromedia) Flash. , JavaScript 2.0, JavaScript 1.6 . , , . JavaScript 2.0 , , .

    1 ECMA262, 3 ( http://www.ecma'internatio'nal.org/publications/files/ecma'st/ECMA'262.pdf).

  • 1.3. JavaScript 23

    1.3. JavaScript JavaScript , JavaScript. , , JavaScript, , JavaScript, JavaScript. JavaScript JavaScript, JavaScript.

    JavaScript JavaScript (Document Object Model, DOM), . JavaScript, DOM . , , JavaScript . JavaScript , DHTML ( 16), , Ajax ( 20). 13 JavaScript.

    ECMA262 JavaScript, World Wide Web Consortium (W3C) DOM, , . ( 15, 16 17 .) W3C DOM Microsoft Internet Explorer; .

    1.3.1. JavaScript, JavaScript, JavaScript. 1.1 JavaScript, , .

    1.1. JavaScript

    var fact = 1;for(i = 1; i < 10; i++) { fact = fact*i; document.write(i + "! = " + fact + "");}

    , JavaScript, , . 1.1.

  • 24 1. JavaScript

    , JavaScript HTML . 13. , , document.write().1 HTML HTML .

    JavaScript HTML, . , JavaScript : . JavaScript, , . 1.2 HTML, , .

    1.2. HTML' JavaScript

    . 1.2 .

    onclick 1.2 JavaScript, , . onclick alert(). . 1.2, alert() .

    1.1 1.2 JavaScript. ,

    1 , .

    . 1.1. ', JavaScript

  • 1.3. JavaScript 25

    HTML. 1.3 JavaScript. , . , HTML, , .

    . 1.3 HTML . ,HTML . . JavaScript : , , JavaScript , , .

    HTML, HTML. ,

    . 1.2. JavaScript

    . 1.3. JavaScript

  • 26 1. JavaScript

    onchange onclick . , , . JavaScript calculate(). , calculate().

    calculate() . , , , , , id.

    1.3 , . JavaScript, HTML, CSS JavaScript, , JavaScript.1

    1.3. JavaScript

    JavaScript

    /* : */.result { fontweight: bold; } /* class="result"*/#payment { textdecoration: underline; } /* id="payment" */

    :

    1 , HTML, CSS JavaScript, , , , . , , , . , 13.1.5 13.

  • 1.3. JavaScript 27

    1) ( ): 2) : 3) : : 4) : $ 5) : $ 6) : $

    /* * JavaScript, . * : calculate(), * . * , , , * . */function calculate( ) { // . , // . // . // . var principal = document.loandata.principal.value; var interest = document.loandata.interest.value / 100 / 12; var payments = document.loandata.years.value * 12;

    // . var x = Math.pow(1 + interest, payments); var monthly = (principal*x*interest)/(x1);

    // . var payment = document.getElementById("payment"); var total = document.getElementById("total");

  • 28 1. JavaScript

    var totalinterest = document.getElementById("totalinterest");

    // , .

    // , .

    if (isFinite(monthly)) {

    payment.innerHTML = monthly.toFixed(2);

    total.innerHTML = (monthly * payments).toFixed(2);

    totalinterest.innerHTML = ((monthly*payments)principal).toFixed(2);

    }

    // , ,

    // , .

    else {

    payment.innerHTML = "";

    total.innerHTML = "";

    totalinterest.innerHTML = "";

    }

    }

    1.4. JavaScriptJavaScript , . JavaScript . Netscape JavaScript, JavaScript . Internet Explorer Microsoft JScript IIS Windows Scripting Host. Adobe JavaScript Flash. Sun JavaScript Java 6.0, Java ( , , 12).

    Netscape, Microsoft JavaScript , . , Netscape, Mozilla (http://www.mozilla.org/js/). Mozilla JavaScript 1.5: C SpiderMonkey, Java , , Rhino ().

    , JavaScript, , , . , , , .

  • 1.5. JavaScript 29

    1.5. JavaScript . JavaScript . , .

    JavaScript . JavaScript , , , . JavaScript, .

    , , 1.1 :

    document.write(" ");for (i=0, j=1, k=0, fib =0; i

  • 30 1. JavaScript

    Firefox JavaScript, . , . JavaScript (javascript:) .

    , JavaScript, , , . JavaScript : , , , . , document.write() alert(). ( , , 15.9.)

    for/in ( 6). , alert() , . .

    JavaScript, , JavaScript. Internet Explorer Microsoft Script Debugger, Firefox , Venkman. , , . , , , , jslint; JavaScript (http://jslint.com).

  • JavaScript

    2 12 JavaScript. , , , , , .

    2 3 4 5 6 7 8 9 , 10 11 12 Java

  • , , . ; , , , , . JavaScript.

    2.1. JavaScript Unicode. 7 ASCII, , 8 ISO Latin1, , 16 Unicode . , .

    , ASCII Latin1, Unicode. , ASCII Latin1 Unicode, JavaScript, , . , 8 , , , JavaScript , .

    ECMAScript v3 Unicode JavaScript. 1 2 Unicode , ,

  • 34 2.

    ASCII.1 JavaScript, ECMAScript, Unicode.

    2.2. JavaScript , . , , , . , while while, While WHILE. online, Online, OnLine ONLINE .

    , , HTML, JavaScript, . HTML JavaScript . JavaScript , HTML, . HTML , JavaScript . , onclick HTML onClick, JavaScript ( XHTML) onclick.

    2.3. JavaScript , , . , . , .

    2.4. JavaScript (;), C, C++ Java. . JavaScript , . , :

    a = 3;b = 4;

    1 , ) , ; ) UTF16 (Unicode , , UTF8, UTF16 .); ) , . . ; . . . .

  • 2.5. 35

    , :

    a = 3; b = 4;

    , .

    JavaScript , JavaScript . , , , JavaScript , , , . , , return, break continue ( 6). , , :

    returntrue;

    JavaScript , :

    return;true;

    , ,

    return true;

    , , , . , :

    breakouterloop;

    JavaScript break, . ++ (. 5) , , .

    2.5. JavaScript, Java, C++, C. , // , JavaScript. /* */ . C . JavaScript:

    // ./* */ // ./*

  • 36 2.

    * .

    * .

    */

    2.6. , . :

    12 //

    1.2 //

    "hello world" //

    'Hi' //

    true //

    false //

    /javascript/gi // ( )

    null //

    ECMAScript v3 , . :

    { x:1, y:2 } //

    [1,2,3,4,5] //

    , . JavaScript 3.

    2.7. . JavaScript , . Java . , (_) ($).1 , , . ( , . . .) :

    i

    my_variable_name

    v13

    _dummy

    $str

    ECMAScript v3 Unicode. JavaScript ASCII. ECMAScript v3

    1 $ , JavaScript 1.1. , .

  • 2.8. 37

    escape Unicode \u, 4 , 16 . , \u03c0. , JavaScript Unicode , , Unicode.

    , , JavaScript . , JavaScript.

    2.8. JavaScript . ( , ) JavaScript. . 2.1 , ECMAScript v3. JavaScript , . . .

    2.1. JavaScript

    . 2.2 . JavaScript , ECMAScript v3 .

    2.2. , ECMA

    ECMAScript v4 as, is, namespace use. JavaScript , .

    break do if switch typeof

    case else in this var

    catch false instanceof throw void

    continue finally new true while

    default for null try with

    delete function return

    abstract double goto native static

    Boolean enum implements package super

    byte export import private synchronized

    char extends int protected throws

    class final interface public transient

    const float long short volatile

    debugger

  • 38 2.

    , , JavaScript. , ( ), , , . . 2.3 , ECMAScript v 3. , , JavaScript (, ) .1

    2.3. ,

    1 Window , JavaScript.

    arguments encodeURI Infinity Object String

    Array Error isFinite parseFloat SyntaxError

    Boolean escape isNaN parseInt TypeError

    Date eval Math RangeError undefined

    decodeURI EvalError NaN ReferenceError unescape

    decodeURIcomponent Function Number RegExp URIError

  • , (values), 3,14 Hello World. , , (data types), . JavaScript : , ( ) ( ). JavaScript , null undefined, .

    JavaScript , (object). (. . ) ( , , , ). JavaScript : . (array). JavaScript , , .

    JavaScript , ' (function). , . (invoked) . , , , JavaScript . .

    JavaScript . , (classes) . Date , , RegExp ,

  • 40 3.

    ( , 11), Error , , JavaScript.

    . , , 7 8. , Date, RegExp Error, III . , .

    3.1. , . JavaScript , C Java, , . JavaScript 64 ( ), IEEE 754.1 1,7976931348623157 10308 5 10324., JavaScript, . JavaScript , . : (), . (. 5), .

    3.1.1. JavaScript . :

    0310000000

    JavaScript 9007199254740992 (253) 9007199254740992 (253) . . , JavaScript ( , 5) 32 , 2147483648 (231) 2147483647 (2311).

    3.1.2. JavaScript ( 16). 0x 0X,

    1 Java double. double C C++.

  • 3.1. 41

    . 0 9 a ( A) f ( F), 10 15. :

    0xff // 15*16 + 15 = 255 ( 10)0xCAFE911

    ECMAScript ( 8), JavaScript . 0, , 0 7. :

    0377 // 3*64 + 7*8 + 7 = 255 ( 10)

    , , , , .

    3.1.3. ; . , .

    : , e ( E), . , 10 , .

    :

    [][.][(E|e)[(+|)]]

    :

    3.14

    2345.789.3333333333333333336.02e23 // 6.02 X 1023

    1.4738223E32 // 1.4738223 X 1032

    : , JavaScript ( 18437736874454810627). , JavaScript . , , .

    3.1.4. JavaScript ,

  • 42 3.

    (+), (), (*) (/). 5.

    JavaScript , . Math, Math. , x :

    sine_of_x = Math.sin(x);

    :

    hypot = Math.sqrt(x*x + y*y);

    , JavaScript, Math .

    3.1.5. JavaScript . 3.2.

    3.1.6. JavaScript . , , JavaScript Infinity. , , Infinity.

    JavaScript, (, ) . , NaN. (NotaNumber) : , ! isNaN(). , isFinite(), NaN / .

    . 3.1 , JavaScript .

    3.1.

    Infinity ,

    NaN

    Number.MAX_VALUE

  • 3.2. 43

    Infinity NaN, ECMAScript v1, JavaScript 1.3. Number JavaScript 1.1.

    3.2. , , Unicode JavaScript . , , . : JavaScript , char C, C++ Java. .

    3.2.1. Unicode, (' "). , , , . . , \n, . :

    "" // : 'testing'"3.14"'name="myform"'" O'Reilly, ?"" \n "

    " "

    , ECMAScript v1 Unicode . , , JavaScript 1.3, ASCII Latin1. , Unicode . , Unicode.

    : , ,

    Number.MIN_VALUE ( )

    Number.NaN

    Number.POSITIVE_INFINITY ,

    Number.NEGATIVE_INFINITY ,

  • 44 3.

    ,, , can't O'Reilly's. , (\) , ( ).

    JavaScript HTML, HTML, , JavaScript. JavaScript, HTML , . JavaScript HTML JavaScript, HTML. JavaScript , , , HTML :

    3.2.2. (\) JavaScript. , , , . , \n ' (escape sequence), .1

    , , \', . , . , . , :

    'You\'re right, it can\'t be a quote'

    . 3.2 . ; Latin1 Unicode . , \xA9 , Latin1 A9. , \u, Unicode, . , \u03c0 . , Unicode ECMAScript v1, , JavaScript 1.3. JavaScript Latin1 , ,

    1 , C, C++ Java, JavaScript .

  • 3.2. 45

    ECMAScript v3 .

    3.2. JavaScript

    , , ( JavaScript) . \ , . 3.2, ( , , ). , \# , #.

    3.2.3. JavaScript . + , , , , . :

    msg = "Hello, " + "world"; // "Hello, world"greeting = " ," + " " + name;

    length. , s , :

    s.length

    . s:

    \0 NUL (\u0000)

    \b (\u0008)

    \t (\u0009)

    \n (\u000A)

    \v (\u000B)

    \f (\u000C)

    \r (\u000D)

    \" (\u0022)

    \' (\u0027)

    \\ (\u005C)

    \xXX Latin1, XX

    \uxXXXX Unicode, XXXX

    \XXX Latin1, XXX, 1 377. ECMAScript v3;

  • 46 3.

    last_char = s.charAt(s.length 1)

    , s, :

    sub = s.substring(1,4);

    a s :

    i = s.indexOf('a');

    , . String .

    , JavaScript (, , JavaScript) , 0. , . , C, ++ Java, , , , , .

    JavaScript ( ) , charAt() :

    last_char = s[s.length 1];

    ECMAScript v3, .

    , , , . , . JavaScript. , . , .

    3.2.4. , . , , :

    var n = 100;var s = n + " .";

    JavaScript , : , :

    var n_as_string = n + "";

    String():

    var string_value = String(number);

  • 3.2. 47

    toString():

    string_value = number.toString( );

    toString() Number ( Number, ) , , , . , 10. ( 2 36)1, :

    var n = 17;binary_string = n.toString(2); // "10001"octal_string = "0" + n.toString(8); // "021"hex_string = "0x" + n.toString(16); // "0x11"

    JavaScript, JavaScript 1.5, , , . , .

    ECMAScript v3 JavaScript 1.5 Number. toFixed() . . toExponential(), . toPrecision(). , . : . :

    var n = 123456.789;n.toFixed(0); // "123457"n.toFixed(2); // "123456.79"n.toExponential(1); // "1.2e+5"n.toExponential(3); // "1.235e+5"n.toPrecision(4); // "1.235e+5"n.toPrecision(7); // "123456.8"

    1 ECMAScript toString(), , , 10. , . .

  • 48 3.

    3.2.5. , . , :

    var product = "21" * "2"; // 42.

    ; 0:

    var number = string_value 0;

    ( : .)

    Number() :

    var number = Number(string_value);

    . , , .

    parseInt() parseFloat(). , , , . parseInt() , parseFloat() , . 0x 0X, parseInt() .1 :

    parseInt("3 "); // 3

    parseFloat("3.14 "); // 3.14

    parseInt("12.34"); // 12

    parseInt("0xFF"); // 255

    parseInt() . 2 36, :

    parseInt("11", 2); // 3 (1*2 + 1)

    parseInt("ff", 16); // 255 (15*16 + 15)

    parseInt("zz", 36); // 1295 (35*36 + 35)

    parseInt("077", 8); // 63 (7*8 + 7)

    parseInt("077", 10); // 77 (7*10 + 7)

    1 ECMAScript , 0 ( 0x 0X), parseInt() , . , parseInt() , 0, .

  • 3.3. 49

    parseInt() parseFloat() , NaN:

    parseInt("eleven"); // NaNparseFloat("$72.47"); // NaN

    3.3. . , , , true false. , . . , .

    , JavaScript. :

    a == 4

    , a 4. , true. a 4, false.

    JavaScript. , if/else JavaScript , true, , false. , , , . :

    if (a == 4) b = b + 1;else a = a + 1;

    , a 4. , b 1; 1 a.

    true false, (true) (false) (true) (false).

    3.3.1. , .1

    1 , C, , JavaScript , C, . Java , JavaScript , , boolean Java JavaScript , , , JavaScript C, Java.

  • 50 3.

    , true 1, false 0. , true "true", false "false".

    , true, 0 NaN, false. , true, , false. null undefined false, , , null, true.

    , Boolean():

    var x_as_boolean = Boolean(x);

    :

    var x_as_boolean = !!x;

    3.4. , JavaScript JavaScript. , JavaScript . , , , ; , . JavaScript , Math.sin(), .

    JavaScript , , , :

    function square(x) // square. , x.{ // . return x*x; // // .} // .

    , , , , . :

    y = Math.sin(x);y = square(x);d = compute_distance(x1, y1, z1, x2, y2, z2);move();

    JavaScript , , JavaScript. , Java, , : . ,

  • 3.5. 51

    JavaScript , . , , , . . , 8.

    , , , . ( 3.5), . . 7.

    3.4.1. square(). JavaScript. ECMAScript v3 ( JavaScript 1.2 ) . function, , , , . , , , , . , JavaScript. square() :

    function square(x) { return x*x; }

    :

    var square = function(x) { return x*x; }

    , , . LISP, . , , , .

    : Function(). :

    var square = new Function("x", "return x*x;");

    . , JavaScript , , , , .

    3.5. , ' (properties) . ( ,

  • 52 3.

    .) , , . , image width height, :

    image.width

    image.height

    JavaScript , , . JavaScript:

    document.myform.button

    button , , , myform document.

    , , , , . , () . , write() document :

    document.write(" ");

    JavaScript , . . . : , , . image, , :

    image["width"]

    image["height"]

    ; . , 7.

    3.5.1. 7, . :

    var o = new Object();

    var now = new Date();

    var pattern = new RegExp("\\sjava\\s", "i");

    , :

    var point = new Object();

    point.x = 2.3;

    point.y = 1.2;

  • 3.6. 53

    3.5.2. JavaScript , . ( ) /, . . , point :

    var point = { x:2.3, y:1.2 };

    . :

    var rectangle = { upperLeft: { x: 2, y: 2 },

    lowerRight: { x: 4, y: 4 }

    };

    , JavaScript. , :

    var square = { "upperLeft": { x:point.x, y:point.y },

    'lowerRight': { x:(point.x + side), y:(point.y+side) }};

    3.5.3. , true. , toString() , . , valueOf(). , . valueOf() . toString(), .

    , .

    3.6. (array), , . , , , , . JavaScript , , . , a , i , a[i] . , . . a[2] a.

    JavaScript, . :

  • 54 3.

    document.images[1].width

    width , , images document.

    : (. 3.5). , . . , JavaScript ( ). , JavaScript , , , Java. 7.

    3.6.1. Array(). :

    var a = new Array();a[0] = 1.2;a[1] = "JavaScript";a[2] = true;a[3] = { x:1, y:3 };

    Array(). , :

    var a = new Array(1.2, "JavaScript", true, { x:1, y:3 });

    Array() , . , 10 :

    var a = new Array(10);

    3.6.2. JavaScript . , , , . , ., , , :

    var a = [1.2, "JavaScript", true, { x:1, y:3 }];

    , :

    var matrix = [[1,2,3], [4,5,6], [7,8,9]];

    , :

    var base = 1024;var table = [base, base+1, base+2, base+3];

  • 3.7. null 55

    , . , :

    var sparseArray = [1,,,,5];

    3.7. null null JavaScript . , null . null . null,, , , , .1

    null , false, 0, "null".

    3.8. undefined , JavaScript, undefined. , , , , . , undefined , null.

    null undefined , == . :

    my.prop == null

    , my.prop , , null. null undefined , , . null undefined, === typeof ( 5).

    null, undefined JavaScript. ECMAScript v3 , undefined, undefined. , , , undefined , .

    , undefined, :

    var undefined;

    1 C C++ , null JavaScript , 0, . null 0, .

  • 56 3.

    , , , undefined. void (. 5) undefined.

    undefined , false. NaN, "undefined".

    3.9. Date , JavaScript. , JavaScript , , . Date JavaScript new Date() ( new 5, 7 ):

    var now = new Date(); // , .// , .// : , 11!var xmas = new Date(2000, 11, 25);

    Date , (GMT). :

    xmas.setFullYear(xmas.getFullYear() + 1); // .var weekday = xmas.getDay(); // 2007 .document.write(": " + now.toLocaleString()); // .

    Date ( , Date) , , , .

    Date .

    3.10. . . JavaScript Perl.

    JavaScript RegExp RegExp(). Date, RegExp JavaScript; , JavaScript.

    Date, RegExp JavaScript. .

  • 3.11. Error 57

    , . :

    /^HTML//[19][09]*//\bjavascript\b/i

    11. , JavaScript.

    3.11. Error ECMAScript v3 . JavaScript . ( 6 throw try.) message, . Error, EvalError, RangeError, ReferenceError, SyntaxError, TypeError URIError. .

    3.12. , , . : , , JavaScript . , , , . , . , JavaScript . . 3.3 , , .

    3.3.

    ,

    "undefined" NaN false Error

    null "null" 0 false Error

    NaN

    true String

    0 false String

    0 "0" false Number

    NaN "NaN" false Number

  • 58 3.

    3.3 ()

    3.13. , : .1 , :

    var s = "These are the times that try people's souls.";

    var last_word = s.substring(s.lastIndexOf(" ")+1, s.length);

    , , s , .

    ? ? typeof (. 5) , , . ?

    , . , JavaScript Number, String Boolean. . (wrapper) , , .

    JavaScript . , . . , JavaScript . String . ,

    ,

    Infinity "Infinity" true Number

    Infinity "Infinity" true Number

    true Number

    true "true" 1 Boolean

    false "false" 0 Boolean

    toString() valueOf(),toString() NaN

    true

    1 , .

  • 3.13. * 59

    . , , ; , .

    , String, , , , , . , s , :

    var len = s.length;

    s , . String, length, , s. , , . JavaScript , .

    String , , . String , , new. :

    var s = "hello world"; //

    var S = new String("Hello World"); // String

    S String? , . typeof, , S , , , String.1 , String, . , . String , , JavaScript String . , String +, :

    msg = S + '!';

    , , String, Number Boolean. .

    , , , Object():

    var number_wrapper = Object(3);

    1 eval() String, String , , .

  • 60 3.

    3.14. , 3.5.3. .1

    , true. ( ), , , false. , true :

    new Boolean(false) // false, truenew Number(0)new String("")new Array( )

    . 3.3 , valueOf(). valueOf() Object, . valueOf() , JavaScript toString() .

    . toString() , . , , 0! , , n, n, n. , NaN.

    , . , . + (=) , , , , : . JavaScript valueOf(). ( , ), . valueOf() , JavaScript toString().

    1 , .

  • 3.15. 61

    : + Date, toString(). , Date toString() valueOf(). Date +, , , .

    valueOf(), . +, . , , , .

    , valueOf(), . valueOf(), , , , valueOf() , toString() . , valueOf().

    , , valueOf() toNumber(). , , ; valueOf() .

    3.15. JavaScript, , .1 . , . . , , . , .

    : ' . , , . , , . , . , , . , . , ,

    1 , .

  • 62 3.

    ( , ).

    . , .1 , , . , . , , . , . . , . , . , . . , , , , . , (. . ), .

    , . . 3.4 . , , , . , JavaScript. , , .

    3.4.

    1 C , , . , JavaScript .

    .

    . , .

    . .

    . , .

  • 3.15. 63

    3.15.1. JavaScript : ' , , , . JavaScript. , , JavaScript. . . , , , . , .

    ? , . JavaScript , . . .

    , , . , . 3.1 , . , , .

    3.1. ,

    //

    var n = 1; // n 1

    var m = n; // : m 1

    //

    // , ,

    function add_to_total(total, x)

    {

    total = total + x; // total

    }

    // , ,

    // n m. n

    // total. m n,

    ( ), , .

    , , . , .

  • 64 3.

    // n. // n .// , .add_to_total(n, m);

    // .// 1 // , "" . // , n. , // , .if (n == 1) m = 2; // n , 1; // m 2

    3.2. , . , . Date, .

    3.2. ,

    // , 2007 // xmas , var xmas = new Date(2007, 11, 25);

    // , var solstice = xmas; //

    // solstice.setDate(21);

    // xmas.getDate( ); // 21, 25

    // .// .// , .// , // , .function add_to_totals(totals, x){ totals[0] = totals[0] + x; totals[1] = totals[1] + x; totals[2] = totals[2] + x;}

    // , .// , , , // , // , :(xmas == solstice) // true

    // , , , // .var xmas = new Date(2007, 11, 25);var solstice_plus_4 = new Date(2007, 11, 25);

    // " "

  • 3.15. 65

    // !

    (xmas != solstice_plus_4) // true

    , . . , . . , , . , . , , , , , , . 3.3 .

    3.3.

    // add_to_totals(). ,

    // .

    function add_to_totals2(totals, x)

    {

    newtotals = new Array(3);

    newtotals[0] = totals[0] + x;

    newtotals[1] = totals[1] + x;

    newtotals[2] = totals[2] + x;

    totals = newtotals; //

    //

    }

    3.15.2. , . , , . , . , . , , .

    , JavaScript . , , , .

    : JavaScript . charAt(), , setCharAt(), . . JavaScript

  • 66 3.

    JavaScript , .

    , , . . , . , JavaScript , , , .

    3.15.3. , , , JavaScript, , . 3.4 , .

    3.4. , ?

    // , , , // . , // . // , , // , :var s1 = "hello";var s2 = "hell" + "o";if (s1 == s2) document.write(" ");

    , . , C, C++ Java, . . JavaScript , , , . , , JavaScript () , .

    3.15.4. : 3.5 , JavaScript.

    3.5. JavaScript

  • , . , , , . . , JavaScript 2 i:

    i = 2;

    3 i sum:

    var sum = i + 3;

    , . JavaScript , ! ,, , , /.1

    4.1. JavaScript , Java C, , JavaScript (untyped) . , , JavaScript , Java C, , . , JavaScript , :

    i = 10;i = "";

    1 , . 5, 6 7, .

  • 68 4.

    Java, C, C++ .

    JavaScript, , , . , , JavaScript , . 3.

    JavaScript , C++ Java, , , , . JavaScript , , .

    4.2. JavaScript, .1

    var :

    var i;

    var sum;

    :

    var i, sum;

    , :

    var message = "hello";

    var i = 0, j = 0, k = 0;

    var, , (undefined), .

    , var for for/in ( 6), . :

    for(var i = 0; i < 10; i++) document.write(i, "");

    for(var i = 0, j = 10; i < 10; i++, j) document.write(i*j, "");

    for(var i in o) document.write(i, "");

    , var, ' (permanent): delete . ( delete 5.)

    1 , JavaScript.

  • 4.3. 69

    4.2.1. var . , .

    , JavaScript . , var, JavaScript . , , , . ( ), , var . var , . ( .)

    4.3. (scope) , . JavaScript. , , . ' . , .

    . , , . , :

    var scope = ""; //

    function checkscope() { var scope = ""; //

    document.write(scope); // ,

    }checkscope(); // ""

    , var , . , , :

    scope = ""; // , var

    function checkscope() {

    scope = ""; // ! document.write(scope); //

    myscope = ""; //

    document.write(myscope); // }

    checkscope(); // ""

    document.write(scope); // ""document.write(myscope); // ""

  • 70 4.

    , , , . , , , . , : var.

    . , . :

    var scope = " "; // function checkscope() { var scope = " "; // function nested() { var scope = " "; // // document.write(scope); // " " } nested();}checkscope();

    4.3.1. : C, C++ Java, JavaScript . , , , , . i, j k : . , C, C++ Java:

    function test(o) { var i = 0; // i if (typeof o == "object") { var j = 0; // j , for(var k = 0; k < 10; k++) { // k , document.write(k); } document.write(k); // k : 10 } document.write(j); // j , }

    , , , , . :

    var scope = "";function f() { alert(scope); // "undefined", "". var scope = ""; // , // . alert(scope); // ""}f();

    , alert() , . . var,

  • 4.4. 71

    , . . , , . , var . f :

    function f() { var scope; // alert(scope); // , undefined scope = ""; // alert(scope); // }

    , .

    4.3.2. JavaScript: . , . ' . , . , .

    , , . , undefined. (unassigned), , .

    :

    var x; // . undefined.alert(u); // .u = 3; // .

    4.4. , , . , . ? , , , , JavaScript. : .

    , , null undefined . , .

    . , , .

  • 72 4.

    . JavaScript , .1

    . , . : . JavaScript. , , . . . , , .

    , . . . , ( ):

    var a = 3.14; // var b = a; // a = 4; // alert(b) // 3.14;

    . , , , ( ):

    var a = [1,2,3]; // var b = a; // a[0] = 99; // , alert(b); // [99,2,3],

    , , . , , . , , . ; .

    , . , . 3.15.

    , , JavaScript . . , , . , JavaScript , . . , ,

    1 , JavaScript.

  • 4.5. 73

    , , . . : . , , , . , , , , , , .

    4.5. ; , . , . , . .

    , , , . JavaScript , , . , , , JavaScript , .

    , C C++, . , , ( ). .1

    JavaScript, , , (garbage collection). JavaScript , ., (. . ), , , .2 :

    var s = "hello"; // var u = s.toUpperCase(); // s = u; //

    "hello" . .

    1 : ( ) , , , . STL, . , new delete. . . .

    2 , , . Perl; . . . . .

  • 74 4.

    . , , , , .

    4.6. , JavaScript . , JavaScript . . i i o? : . JavaScript .

    4.6.1. , JavaScript , . JavaScript. JavaScript , .

    JavaScript , . , Infinity, parseInt Math , parseInt() Math. .

    (. . JavaScript, ) this. this , 8.

    JavaScript JavaScript, , Window. window, , this . Window , parseInt Math, , navigator screen.

    4.6.2. , ? . (call object). , . JavaScript .

    4.6.3. JavaScript , JavaScript (execution context), . . ,

  • 4.7. 75

    JavaScript. , . JavaScript, , , . JavaScript , .

    , JavaScript .1

    ( .) JavaScript, . JavaScript . , . , JavaScript parent.frames[1], x parent.frames[0].x.

    , JavaScript. JavaScript 13. , JavaScript JavaScript .

    . JavaScript , , . JavaScript. , A , B . , B A. , , ., JavaScript , , . 13.8.

    4.7. , JavaScript: , , , .

    1 ; , .

  • 76 4.

    , , , . , , , , . , JavaScript.

    JavaScript ' (scope chain), , , . JavaScript x ( ), () . x, . x, JavaScript . x, , . .

    JavaScript ( , ), . . , undefined. ( ) . , ( ), ( ). . . 4.1.

    . 4.1.

  • , JavaScript., C, C++ Java, , JavaScript , . , C, C++ Java, , JavaScript.

    5.1. JavaScript, . , :

    1.7 // "JavaScript is fun!" // true // null // null/java/ // { x:2, y:2 } // [2,3,5,7,11,13,17,19] // function(x){return x*x;} // i // isum // sum

    . , , , .

    . ( ) . , , 1.7 , i . :

    i + 1.7

  • 78 5.

    . + , . (), . :

    (i + 1.7) sum

    sum , i + 1.7. , JavaScript , + .

    5.2. C, C++ Java, JavaScript . . 5.1, . : , + =, , delete instanceof. , , .

    , P, , , A, ( L , R ). , , , , .

    5.1. JavaScript'

    P A

    15 L . ,

    L [] ,

    L () ,

    R new

    14 R ++

    ()

    R

    ()

    R ( )

    R + ( )

    R ~ ()

    R ! ()

    R delete

    ()

    R typeof ()

  • 5.2. 79

    5.2.1. . JavaScript, +, , . , . , . JavaScript ,

    R void ()

    13 L *, /, % , ,

    12 L +, ,

    L +

    11 L >

    L >>>

    10 L = ,

    L instanceof ,

    L in ,

    9 L ==

    L !=

    L ===

    L !==

    8 L &

    7 L ^

    6 L |

    5 L &&

    4 L ||

    3 R ?: , ,

    2 R = ,

    R *=, /=, %=, +=,=, =,>>>=, &=, ^=, |=

    ,

    1 L ,

    P A

  • 80 5.

    , . 3 , 3. , JavaScript , ?:, .

    5.2.2. JavaScript, , , , . , . , , "a" * "b" JavaScript. JavaScript , "3" * "5" . 15, "15". JavaScript 3.12.

    . +, . , , . , "1" + 0 "10".

    , , , (lvalue). , , . JavaScript , . ECMAScript , , .

    , , . (, , . .) , , , . , a < 3 true, a , 3. , , , if, while for, JavaScript .

    5.2.3. . 5.1 , P, . , . P , , .

    :

    w = x + y * z;

  • 5.3. 81

    * +, . , = , .

    . , :

    w = (x + y)* z;

    , , . : , .

    5.2.4. . 5.1 , A, . L , R . . , . , , :

    w = x + y + z;w = ((x + y) + z);

    ( ) :

    x = ~~y;w = x = y = z;q = a?b:c?d:e?f:g;

    :

    x = ~((~y));w = (x = (y = z));q = a?b:(c?d:(e?f:g));

    , , .

    5.3. , , . :

    (+)

    . , .

  • 82 5.

    , . valueOf() / toString().

    ()

    , . , .

    (*)

    * . .

    (/)

    / . . , , , . JavaScript , . 5/2 2.5, 2. , 0/0 NaN.

    (%)

    % , . , . , 5 % 2 1. , . , 4.3 % 2.1 0.1.

    ()

    , . , , . , .

    (+)

    JavaScript . , , :

    var profit = +1000000;

    ; . . , NaN.

    (++)

    (. . ) , , . , ,

  • 5.4. 83

    . . ( ), 1, . ( ), 1, . , . , i j 2:

    i = 1;j = ++i;

    i 2, j 1:

    i = 1;j = i++;

    , . : , JavaScript . , JavaScript .

    ()

    (. . 1) , , . , , . ++, . , , , .

    5.4. . , (true false) . 6, if for .

    5.4.1. (==) (===) == === , . true, , false, . ===, , , . == , , , .

  • 84 5.

    ECMAScript v3 JavaScript 1.3 . JavaScript =, == ===. , , . ! , = , , == , ===.

    JavaScript , '. , == === , . , , . , , .

    , . , , . , . , , , , , . , , . ( , , .)

    === :

    , . , ,

    NaN ( , ). NaN , ! , NaN, isNaN().

    , . , . , Unicode . JavaScript , , . III String.localeCompare().

    true false, .

    , , . ( ), , .

  • 5.4. 85

    null undefined, .

    ==:

    , . , ; , .

    , . :

    null, undefined, . , ,

    .

    true, 1 . false, 0 .

    , , . toString(), valueOf(). JavaScript valueOf(), toString(), Date, toString(). , JavaScript, , .

    .

    :

    "1" == true

    true, . . . true 1, . "1" 1. , true.

    5.4.2. (!=) (!==) != !== , == ===. != false, , true . !== false, , true . ECMAScript v3 JavaScript 1.3 .

    , ! . , != , !== . .

  • 86 5.

    5.5. JavaScript. , ( ) true false , . 6, if while .

    5.5.1. . :

    ()

    > true, , ; false.

    (= true, ; false.

    . , , , . :

    , .

    , .

    , , . , NaN false. ( JavaScript 1.1 NaN, .)

    , , JavaScript . , , Date , . . , .

    , false.

  • 5.5. 87

    NaN, false.

    , , Unicode. Unicode , JavaScript ; , . : , . . Unicode ( , ASCII) . . , < "Zoo" "aardvark".

    String.localeCompare(), . String.toLowerCase() String.toUpperCase().

    = ( ) . , . , NaN ( ); false.

    5.5.2. in in , . ( ). true, , . :

    var point = { x:1, y:1 }; //

    var has_x_coord = "x" in point; // true

    var has_y_coord = "y" in point; // true

    var has_z_coord = "z" in point; // false;

    var ts = "toString" in point; // ; true

    5.5.3. instanceof instanceof , , . true, , , , ; false. 9 , JavaScript ., instanceof . : Object. :

    var d = new Date(); // Date()

    d instanceof Date; // true; d

    // Date()

  • 88 5.

    d instanceof Object; // true;

    // Object

    d instanceof Number; // false; d Number

    var a = [1, 2, 3]; //

    a instanceof Array; // true; a

    a instanceof Object; // true;

    a instanceof RegExp; // false;

    instanceof , , instanceof false. , .

    5.6. , , , .

    + . , , , . , "hello there":

    "hello" + " " + "there"

    "22":

    a = "2"; b = "2";

    c = a + b;

    = , . . 5.1.1, JavaScript Unicode. , ( ), .

    == != , , , , .

    + , . , + ( ), ( ) , . , , . , JavaScript . :

    1 + 2 // . 3.

    "1" + "2" // . "12".

    "1" + 2 // ; 2 "2". "12".

    11 < 3 // . false.

    "11" < "3" // . true.

  • 5.7. 89

    "11" < 3 // ; "11" 11. false."one" < 3 // ; "one" NaN. false.

    , , + , . , , . :

    s = 1 + 2 + " "; // "3 "t = " : " + 1 + 2; // " : 12"

    , + , . , :

    s = (1 + 2) + " "; // ; t = (" : " + 1) + 2; //

    5.7. . if, while for.

    5.7.1. (&&) && : true , true. false, false.

    . . false ( null, 0, "" undefined), . .1

    , , . , &&. , JavaScript :

    if (a == b) stop();(a == b) && stop();

    ( Perl) , . , , . :

    1 JavaScript 1.0 1.1, false, && .

  • 90 5.

    if ((a == null) && (b++ > 10)) stop();

    , , , . . , false. , , (, , ), &&, , .

    , . , , , .

    5.7.2. (||) || : true, ( ) true. false, false.

    || , , &&, . . true, . .1

    &&, , , , .

    || , , . . .

    , || , , , , . , || , null (. . , true). :

    // max_width , . // preferences. // ( max_with) , // , .var max = max_width || preferences.max_width || 500;

    1 JavaScript 1.0 1.1, true, true, .

  • 5.8. 91

    5.7.3. (!) ! , . . , a true ( , true), !a false. p && q false ( , false), !(p && q) true. , , : !!x.

    5.8. , JavaScript , . 32 , . , , . .

    32 , 32 , 32. , 0 31. 32 5, .

    , , , . JavaScript. :

    (&)

    & . 1, 1 . 0x1234 & 0x00FF 0x0034.

    (|)

    | . 1, 1 . , 9 | 10 11.

    (^)

    ^ . , , , . , ( ) . , 9 ^ 10 3.

  • 92 5.

    (~)

    ~ , . . JavaScript ~ 1., ~0x0f 0xfffffff0, 16.

    (> 1 3, 7 >> 1 4.

    (>>>)

    >>> >> , . , 1 >> 4 1, 1 >>> 4 268435455 (0x0fffffff).

    5.9. 4, JavaScript =. :

    i = 0

    JavaScript , , = .

    = , . . . = , , , , .

  • 5.9. 93

    = , . , :

    (a = b) == 0

    , = == !

    , . , , :

    i = j = k = 0;

    , , . ( ) (), ( ) .

    5.9.1. (=) JavaScript , . , += . :

    total += sales_tax

    total = total + sales_tax

    , += , . , , .

    =, *=, &= . . 5.2.

    5.2.

    += a += b a = a + b

    = a = b a = a b

    *= a *= b a = a * b

    /= a /= b a = a / b

    %= a %= b a = a % b

    > b

    >>>= a >>>= b a = a >>> b

    &= a &= b a = a & b

    |= a |= b a = a | b

    ^= a ^= b a = a ^ b

  • 94 5.

    ( op ):

    a op= ba = a op b

    , a , , .

    5.10. JavaScript , .

    5.10.1. (?:) ( ) JavaScript . ?:, . , ?, ? :, :. :

    x > 0 ? x*y : x*y

    ( ) . . , , . true, . false, .

    if, ?: . , , , , , , :

    greeting = "hello " + (username != null ? username : "there");

    if, :

    greeting = "hello ";if (username != null) greeting += username;else greeting += "there";

    5.10.2. typeof typeof , . , .

    typeof "number", "string" "boolean", , .

  • 5.10. 95

    , ( ) null "object". "function", "undefined".

    typeof "object", Number, String Boolean. "object" Date RegExp. , JavaScript, , JavaScript, typeof . JavaScript typeof "object" , .

    typeof , , :

    typeof i(typeof value == "string") ? "'" + value + "'" : value

    typeof , typeof , :

    typeof(i)

    typeof "object", , . , , instanceof constructor ( Object.constructor, ).

    typeof ECMAScript v1 JavaScript 1.1 .

    5.10.3. (new) new . , :

    new ()

    , , , . new JavaScript , , . new:

    o = new Object; // d = new Date(); // Date, c = new Rectangle(3.0, 4.0, 1.5, 2.75); // Rectangleobj[i] = new constructors[i]();

    new , , , this.

  • 96 5.

    . 7 new, this .

    new new Array(). 7.

    5.10.4. delete delete , , .1 true, , false . JavaScript . , , var. delete , true. ( , ECMAScript , delete true, , .) :

    var o = {x:1, y:2}; // ; delete o.x; // ; truetypeof o.x; // ; "undefined"delete o.x; // ; truedelete o; // ; falsedelete 1; // ; truex = 1; // vardelete x; // ; truex; // : x

    : , undefined. , . 4.3.2.

    , delete , , . :

    var my = new Object(); // "my"my.hire = new Date(); // my.hire Datemy.fire = my.hire; // my.fire delete my.hire; // hire ; truedocument.write(my.fire); // my.fire Date

    5.10.5. void void , . :

    1 , C++, , delete JavaScript delete C++. JavaScript . delete C++, , .

  • 5.10. 97

    undefined. URL javascript:, , .

    , void HTML:

    void undefined. void ECMAScript v1 JavaScript 1.1. ECMAScript v3 undefined, JavaScript 1.5. void 0, undefined.

    5.10.6. (,) . , , . .

    i=0, j=1, k=2;

    2 :

    i = 0;j = 1;k = 2;

    ; , , . for, 6.

    5.10.7. 3, ([]), (.). , JavaScript .

    , ( ). , ; . :

    document.lastModifiednavigator.appNameframes[0].lengthdocument.write("hello world")

    , JavaScript , undefined.

    , .

  • 98 5.

    : . .

    [] . , . ( ) , ( ) , . :

    frames[1]document.forms[i + j]document.forms[i].elements[j++]

    [] , , , . : , . , , , . :

    document["lastModified"]frames[0]['length']data["val" + i]

    [] . , , . . . , , []. for/in, 6. , o for/in []:

    for (f in o) { document.write('o.' + f + ' = ' + o[f]); document.write('');}

    5.10.8. () JavaScript . , . , . , , . . () , , . :

    document.close()Math.sin(x)alert("Welcome " + name)Date.UTC(2000, 11, 31, 23, 59, 59)funcs[i].f(funcs[i].args[0], funcs[i].args[1])

  • , JavaScript, . , . , ' JavaScript, . JavaScript. JavaScript , , .

    JavaScript, , 2.4 , JavaScript . , JavaScript . .

    6.1. JavaScript , . 5. . :

    s = " " + name;i *= 3;

    , ++ , . , :

    counter++;

    delete . , :

  • 100 6.

    delete o.x;

    . :

    alert(" , " + name);window.close();

    , , .

    , , . , :

    Math.cos(x);

    , :

    cx = Math.cos(x);

    : .

    6.2. 5 , . JavaScript . . , , JavaScript :

    { x = Math.PI; cx = Math.cos(x); alert("cos(" + x + ") = " + cx);}

    , , . , .

    , . , JavaScript ( ); . JavaScript , . , .

    , JavaScript ,

  • 6.3. if 101

    . , . , break, continue, return throw . .

    6.3. if if , JavaScript , , . . :

    if ()

    if . true true, . false false, . :

    if (username == null) // username null undefined, username = "John Doe"; //

    :

    // username null, undefined, 0, "" NaN, // false, .if (!username) username = "John Doe";

    , if. , . if :

    if ((address == null) || (address == "")) { address = "undefined"; alert(", .");}

    , , . JavaScript, , . , , .

    if else, , false. :

    if ()

    1else

    2

    , true, 1, 2. :

  • 102 6.

    if (username != null) alert(" " + username + "\n .");else { username = prompt(" !\n ?"); alert(" " + username);}

    if else , else if. :

    i = j = 1;k = 2;if (i == j) if (j == k) document.write("i k");else document.write("i j"); // !!

    if if. , ( , ), if else. , JavaScript :

    if (i == j) { if (j == k) document.write("i k"); else document.write("i j"); // OOPS!}

    JavaScript ( ): else if. , , , :

    if (i == j) { if (j == k) { document.write("i k"); }}else { // ! document.write("i j");}

    if else ( , while) , . , .

    6.4. else if , if/else

  • 6.5. switch 103

    . ? else if. JavaScript, , if/else:

    if (n == 1) { // 1}else if (n == 2) { // 2}else if (n == 3) { // 3}else { // else , 4}

    . if, if else . else if , :

    if (n == 1) { // 1}else { if (n == 2) { // 2 } else { if (n == 3) { // 3 } else { // else , 4 } }}

    6.5. switch if . if, . , . if.

    switch , if. switch JavaScript switch Java C. switch , if:

  • 104 6.

    switch() { }

    switch , . case, . switch, , case, . , , , case. case , , default:. default: , .

    switch , . switch if/else, :

    switch(n) { case 1: // , n == 1 // 1. break; // case 2: // , n == 2 // 2. break; // case 3: // , n == 3 // 3. break; // default: // ... // 4. break; // }

    break case. break, , switch . case switch , . break switch case, , , . , case , 99 % case break. ( switch break return. switch case.)

    switch; , :

    function convert(x) { switch(typeof x) { case 'number': // return x.toString(16); case 'string': // , return '"' + x + '"'; case 'boolean': // TRUE FALSE,

  • 6.6. while 105

    return x.toString().toUpperCase();

    default: //

    return x.toString()

    }

    }

    : case . switch , ECMAScript v3 case .1 :

    case 60*60*24:

    case Math.PI:

    case n+1:

    case a[0]:

    switch switch, case , , .2 ===, ==, .

    : case, , , , . . switch case. , . case .

    , case switch, switch default:. default: , switch . , default: switch case. , switch.

    6.6. while if , JavaScript , while

    1 switch JavaScript switch C, C++ Java. case , , integer , .

    2 , switch JavaScript , C, C+ Java. case , , , JavaScript. , case C, C++ Java , switch .

  • 106 6.

    , JavaScript . :

    while ()

    while . false, JavaScript , true, , , . , false, JavaScript , . , false, while JavaScript . while(true) .

    , JavaScript . . , , , . , ( ) , . , . . , true, ! while:

    var count = 0;while (count < 10) { document.write(count + ""); count++;}

    , count 0, , . 10 , false(. . count 10), while JavaScript . , count. i, j k, , .

    6.7. do/while do/while while, , , . , . :

    do while ();

    do/while , while. , , , . :

  • 6.8. for 107

    function printArray(a) { if (a.length == 0) document.write(" "); else { var i = 0; do { document.write(a[i] + ""); } while (++i < a.length); }}

    do/while while . , do do ( ), while ( ). , while, do . , do , , .

    6.8. for, for, , while. for , ( while). . , . , , .

    , , ; for . , for, , . for:

    for(; ; )

    for, while:1

    ;while() { ;}

    , . , , ( ), . . .

    1 continue, while for.

  • 108 6.

    JavaScript , var, . , . true, , . . , , . , , ++ .

    while , 0 9, for:

    for(var count = 0; count < 10; count++)

    document.write(count + "");

    , , . , for ; .

    , , , . JavaScript, , for. :

    for(i = 0, j = 10; i < 10; i++, j)

    sum += i * j;

    6.