Tajniki jezyka JavaScript Typy i skladnia.pdf

(1978 KB) Pobierz
Tytuł oryginału: You Don't Know JS: Types & Grammar
Tłumaczenie: Piotr Pilch
ISBN: 978-83-283-2174-8
© 2016 Helion S.A.
Authorized Polish translation of the English edition You Don't Know JS: Types & Grammar ISBN
9781491904190 © 2015 Getify Solutions, Inc.
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording or by any information storage retrieval system,
without permission from the Publisher.
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej
publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną,
fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje
naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich
właścicieli.
Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były
kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane
z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie
ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji
zawartych w książce.
Wydawnictwo HELION
ul. Kościuszki 1c, 44-100 GLIWICE
tel. 32 231 22 19, 32 230 98 63
e-mail:
helion@helion.pl
WWW:
http://helion.pl
(księgarnia internetowa, katalog książek)
Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://helion.pl/user/opinie/tjtypy
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Printed in Poland.
Kup książkę
Poleć książkę
Oceń książkę
Księgarnia internetowa
Lubię to! » Nasza społeczność
Spis treści
Przedmowa ................................................................................................................ 5
Wprowadzenie ............................................................................................................ 7
1. Typy ......................................................................................................................... 11
Typ identyfikowany przez dowolną inną nazwę…
Typy wbudowane
Wartości jako typy
Podsumowanie
11
12
14
18
2. Wartości ................................................................................................................... 19
Tablice
Łańcuchy
Liczby
Wartości specjalne
Porównanie wartości z odwołaniem
Podsumowanie
19
21
23
29
36
40
3. Obiekty macierzyste .................................................................................................. 43
Właściwość wewnętrzna [[Class]]
Obiekty opakowujące
Rozpakowywanie
Obiekty macierzyste jako konstruktory
Podsumowanie
44
45
46
47
55
4. Konwersja typów ...................................................................................................... 57
Przekształcanie wartości
Operacje abstrakcyjne na wartościach
Jawna konwersja typów
Niejawna konwersja typów
57
59
68
80
3
Kup książkę
Poleć książkę
Porównanie równości luźnej i ścisłej
Abstrakcyjne porównanie relacyjne
Podsumowanie
91
105
107
5. Gramatyka .............................................................................................................. 109
Instrukcje i wyrażenia
Pierwszeństwo operatorów
Automatycznie używane średniki
Błędy
Argumenty funkcji
Blok try..finally
switch
Podsumowanie
109
121
128
131
133
135
138
140
A Kod JavaScript w środowisku mieszanym ................................................................. 143
Załącznik B (język ECMAScript)
Obiekty hosta
Zmienne globalne modelu DOM
Prototypy obiektów macierzystych
Elementy <script>
Słowa zastrzeżone
Ograniczenia implementacji
143
145
146
146
150
152
153
B Podziękowania ....................................................................................................... 155
Skorowidz ............................................................................................................... 158
4
Spis treści
Poleć książkę
Kup książkę
ROZDZIAŁ 1.
Typy
Większość projektantów stwierdziłaby, że język dynamiczny (np. JavaScript) pozbawiony jest
typów.
Sprawdźmy, co na ten temat napisano w specyfikacji języka ECMAScript 5.1 (http://www.ecma-
-international.org/ecma-262/5.1/):
Algorytmy ujęte w tej specyfikacji modyfikują wartości, z których każda ma powiązany typ.
Możliwe typy wartości są dokładnie tymi, które zdefiniowano w niniejszej klauzuli. Typy są
dodatkowo klasyfikowane jako typy języka ECMAScript i typy specyfikacji.
Typ języka ECMAScript odpowiada wartościom, które są bezpośrednio modyfikowane przez
programistę używającego tego języka. Do tej kategorii typów zaliczają się typy
undefined
,
null
,
boolean
,
string
,
number
i
object
.
Jeśli jesteś zwolennikiem języków z silną (statyczną) typizacją, możesz nie zgodzić się z takim użyciem
słowa „typ”. W takich językach termin „typ” oznacza o wiele
więcej
niż w języku JavaScript.
Niektórzy twierdzą, że w obrębie języka JavaScript nie powinno się posługiwać terminem „typy” i że
zamiast niego powinno być używane określenie „znaczniki” lub być może „podtypy”.
Też coś! Użyjemy następującej ogólnej definicji (jak można sądzić, tej samej, na której bazuje sformu-
łowanie zawarte w specyfikacji):
typ
to nieodłączny, wbudowany zbiór cech, które w unikalny sposób
identyfikują zachowanie określonej wartości i odróżniają ją od innych wartości, zarówno z punktu
widzenia silnika,
jak i
projektanta.
Inaczej mówiąc, jeśli silnik i projektant traktują wartość
42
(liczba) inaczej niż wartość
"42"
(łańcuch),
to te dwie wartości mają inne
typy,
czyli odpowiednio typy
number
i
string
. Używając wartości
42
,
zamierzasz
wykonać jakieś działanie liczbowe (np. obliczenie matematyczne). Gdy jednak zastosujesz
wartość
"42"
,
zamierzasz
zrealizować jakieś działanie łańcuchowe (np. wyświetlenie wyniku na stronie
itp.). Te dwie wartości mają różne typy.
W żadnej mierze nie jest to idealna definicja. Wystarczająca jest jednak na potrzeby niniejszego
omówienia, a ponadto jest spójna ze sposobem opisu typów w samym języku JavaScript.
Typ identyfikowany przez dowolną inną nazwę…
Pomińmy rozbieżności w definicji i zastanówmy się, dlaczego to, czy język JavaScript zawiera
typy,
czy nie, ma znaczenie.
11
Kup książkę
Poleć książkę
Zgłoś jeśli naruszono regulamin