|
1 |
| -# Type Conversions |
| 1 | +# Rzutowanie typów |
2 | 2 |
|
3 |
| -Most of the time, operators and functions automatically convert the values given to them to the right type. |
| 3 | +W większości przypadków operatory i funkcje automatycznie rzutują przekazywane do nich wartości na właściwy typ. |
4 | 4 |
|
5 |
| -For example, `alert` automatically converts any value to a string to show it. Mathematical operations convert values to numbers. |
| 5 | +Na przykład `alert` automatycznie zmieni typ dowolnej wartości do typu tekstowego. Matematyczne operacje rzutują wartości do typów liczbowych. |
6 | 6 |
|
7 |
| -There are also cases when we need to explicitly convert a value to the expected type. |
| 7 | +Istnieją jednak przypadki, w których musimy jawnie zmienić typ wartości na inny. |
8 | 8 |
|
9 |
| -```smart header="Not talking about objects yet" |
10 |
| -In this chapter, we won't cover objects. Instead, we'll study primitives first. Later, after we learn about objects, we'll see how object conversion works in the chapter <info:object-toprimitive>. |
11 |
| -``` |
| 9 | +```smart header="Nie mówimy jeszcze o obiektach" |
| 10 | +W tym rozdziale nie zajmujemy się obiektami. Zamiast tego nauczymy się najpierw typów prostych. Później nauczymy się co nieco o obiektach i w rozdziale pt. "<info:object-toprimitive>" zobaczymy, jak działa rzutowanie obiektów. |
12 | 11 |
|
13 |
| -## String Conversion |
| 12 | +## Rzutowanie do typu tekstowego |
14 | 13 |
|
15 |
| -String conversion happens when we need the string form of a value. |
| 14 | +Rzutowanie do typu tekstowego następuje, kiedy potrzebujemy wartości zmiennej w formie tekstowej. |
16 | 15 |
|
17 |
| -For example, `alert(value)` does it to show the value. |
| 16 | +Na przykład, funkcja `alert(value)` rzutuje wyświetlaną wartość do typu tekstowego. |
18 | 17 |
|
19 |
| -We can also call the `String(value)` function to convert a value to a string: |
| 18 | +Możemy również wywołać funkcję `String(value)`, żeby jawnie rzutować wartość na tekst: |
20 | 19 |
|
21 | 20 | ```js run
|
22 | 21 | let value = true;
|
23 | 22 | alert(typeof value); // boolean
|
24 | 23 |
|
25 | 24 | *!*
|
26 |
| -value = String(value); // now value is a string "true" |
| 25 | +value = String(value); // teraz wartość "true" jest ciągiem znaków |
27 | 26 | alert(typeof value); // string
|
28 | 27 | */!*
|
29 | 28 | ```
|
30 | 29 |
|
31 |
| -String conversion is mostly obvious. A `false` becomes `"false"`, `null` becomes `"null"`, etc. |
| 30 | +Rzutowanie wartości do tekstu jest bardzo przewidywalne. `false` zostaje `"false"`, typ `null` staje się napisem `"null"` itd. |
32 | 31 |
|
33 |
| -## Numeric Conversion |
| 32 | +## Rzutowanie do typu liczbowego |
34 | 33 |
|
35 |
| -Numeric conversion happens in mathematical functions and expressions automatically. |
| 34 | +Rzutowanie do typu liczbowego następuje automatycznie w wyniku matematycznych wyrażeń i funkcji. |
36 | 35 |
|
37 |
| -For example, when division `/` is applied to non-numbers: |
| 36 | +Na przykład przy dzieleniu (`/`) z udziałem wartości nie będących liczbami: |
38 | 37 |
|
39 | 38 | ```js run
|
40 |
| -alert( "6" / "2" ); // 3, strings are converted to numbers |
| 39 | +alert( "6" / "2" ); // 3, wartości tekstowe są zamienane na liczby |
41 | 40 | ```
|
42 | 41 |
|
43 |
| -We can use the `Number(value)` function to explicitly convert a `value` to a number: |
| 42 | +Możemy użyć funkcji `Number(value)`, aby jawnie rzutować zmienną `value` na liczbę. |
44 | 43 |
|
45 | 44 | ```js run
|
46 | 45 | let str = "123";
|
47 | 46 | alert(typeof str); // string
|
48 | 47 |
|
49 |
| -let num = Number(str); // becomes a number 123 |
| 48 | +let num = Number(str); // staje się typem liczbowym o wartości 123 |
50 | 49 |
|
51 | 50 | alert(typeof num); // number
|
52 | 51 | ```
|
53 | 52 |
|
54 |
| -Explicit conversion is usually required when we read a value from a string-based source like a text form but expect a number to be entered. |
| 53 | +Jawne rzutowanie jest zazwyczaj wymagane, gdy chcemy odczytać wartość ze źródła tekstowego, a w kodzie oczekujemy wartości liczbowej. |
55 | 54 |
|
56 |
| -If the string is not a valid number, the result of such a conversion is `NaN`. For instance: |
| 55 | +Jeśli podana wartość tekstowa nie jest prawidłową liczbą, wynikiem konwersji będzie `NaN`. Dla przykładu: |
57 | 56 |
|
58 | 57 | ```js run
|
59 |
| -let age = Number("an arbitrary string instead of a number"); |
| 58 | +let age = Number("dowolny ciąg znaków zamiast typu liczbowego"); |
60 | 59 |
|
61 |
| -alert(age); // NaN, conversion failed |
| 60 | +alert(age); // NaN, rzutowanie nie powiodło się |
62 | 61 | ```
|
63 | 62 |
|
64 |
| -Numeric conversion rules: |
| 63 | +Zasady rzutowania do typu liczbowego: |
65 | 64 |
|
66 |
| -| Value | Becomes... | |
67 |
| -|-------|-------------| |
| 65 | +| Wartość | Otrzymamy... | |
| 66 | +|---------|-------------| |
68 | 67 | |`undefined`|`NaN`|
|
69 | 68 | |`null`|`0`|
|
70 |
| -|<code>true and false</code> | `1` and `0` | |
71 |
| -| `string` | Whitespaces from the start and end are removed. If the remaining string is empty, the result is `0`. Otherwise, the number is "read" from the string. An error gives `NaN`. | |
| 69 | +|<code>true i false</code> | `1` i `0` | |
| 70 | +| `string` | Białe znaki z początku i końca są usuwane. Jeśli pozostała wartość napisu jest pusta, wynikiem będzie `0`. W przeciwnym wypadku liczba jest odczytywana z tekstu. Wszystkie nieprawidłowe rzutowania dają `NaN`. | |
72 | 71 |
|
73 |
| -Examples: |
| 72 | +Przykłady: |
74 | 73 |
|
75 | 74 | ```js run
|
76 | 75 | alert( Number(" 123 ") ); // 123
|
77 |
| -alert( Number("123z") ); // NaN (error reading a number at "z") |
| 76 | +alert( Number("123z") ); // NaN (błąd podczas rzutowania "z" na liczbę) |
78 | 77 | alert( Number(true) ); // 1
|
79 | 78 | alert( Number(false) ); // 0
|
80 | 79 | ```
|
81 | 80 |
|
82 |
| -Please note that `null` and `undefined` behave differently here: `null` becomes zero while `undefined` becomes `NaN`. |
| 81 | +Zauważ, że `null` i `undefined` zachowują się inaczej. `null` jest konwertowany do zera, a `undefined` do `NaN`. |
83 | 82 |
|
84 |
| -````smart header="Addition '+' concatenates strings" |
85 |
| -Almost all mathematical operations convert values to numbers. A notable exception is addition `+`. If one of the added values is a string, the other one is also converted to a string. |
| 83 | +````smart header="Operator '+' łączy ciągi znaków" |
| 84 | +Większość operacji matematycznych rzutuje wartości do typu liczbowego. Jedynym wyjątkiem jest `+`. Jeśli jedna z dodawanych wartości będzie typu tekstowego, druga również jest rzutowana do typu tekstowego. |
86 | 85 |
|
87 |
| -Then, it concatenates (joins) them: |
| 86 | +Wtedy następuje ich konkatenacja (połączenie): |
88 | 87 |
|
89 | 88 | ```js run
|
90 |
| -alert( 1 + '2' ); // '12' (string to the right) |
91 |
| -alert( '1' + 2 ); // '12' (string to the left) |
| 89 | +alert( 1 + '2' ); // '12' (tekst po prawej) |
| 90 | +alert( '1' + 2 ); // '12' (tekst po lewej) |
92 | 91 | ```
|
93 | 92 |
|
94 |
| -This only happens when at least one of the arguments is a string. Otherwise, values are converted to numbers. |
| 93 | +Dzieje się tak w sytuacji, gdy przynajmniej jeden z argumentów jest typu tekstowego. W przeciwnym wypadku wartości są rzutowane na typ liczbowy. |
95 | 94 | ````
|
96 | 95 |
|
97 |
| -## Boolean Conversion |
| 96 | +## Rzutowanie do typu logicznego |
98 | 97 |
|
99 |
| -Boolean conversion is the simplest one. |
| 98 | +Rzutowania do typu logicznego są najprostsze. |
100 | 99 |
|
101 |
| -It happens in logical operations (later we'll meet condition tests and other similar things) but can also be performed explicitly with a call to `Boolean(value)`. |
| 100 | +Zachodzą w operacjach logicznych (później poznamy instrukcje warunkowe i inne podobne rzeczy), ale także mogą zostać wywołane z użyciem funkcji `Boolean(value)`. |
102 | 101 |
|
103 |
| -The conversion rule: |
| 102 | +Zasada rzutowania: |
104 | 103 |
|
105 |
| -- Values that are intuitively "empty", like `0`, an empty string, `null`, `undefined`, and `NaN`, become `false`. |
106 |
| -- Other values become `true`. |
| 104 | +- Wartości "puste", np. `0`, pusty ciąg znaków, `null`, `undefined` i `NaN`, są konwertowane do `false`. |
| 105 | +- Inne wartości są konwertowane do `true`. |
107 | 106 |
|
108 |
| -For instance: |
| 107 | +Na przykład: |
109 | 108 |
|
110 | 109 | ```js run
|
111 | 110 | alert( Boolean(1) ); // true
|
112 | 111 | alert( Boolean(0) ); // false
|
113 | 112 |
|
114 |
| -alert( Boolean("hello") ); // true |
| 113 | +alert( Boolean("witaj") ); // true |
115 | 114 | alert( Boolean("") ); // false
|
116 | 115 | ```
|
117 | 116 |
|
118 |
| -````warn header="Please note: the string with zero `\"0\"` is `true`" |
119 |
| -Some languages (namely PHP) treat `"0"` as `false`. But in JavaScript, a non-empty string is always `true`. |
| 117 | +````warn header="Miej na uwadze, że tekst zawierający cyfrę 0 (`\"0\"`) da `true`" |
| 118 | +Niektóre języki (np. PHP) traktują `"0"` jako `false`. Ale w JavaScripcie każdy niepusty ciąg znaków daje zawsze `true`. |
120 | 119 |
|
121 | 120 | ```js run
|
122 | 121 | alert( Boolean("0") ); // true
|
123 |
| -alert( Boolean(" ") ); // spaces, also true (any non-empty string is true) |
| 122 | +alert( Boolean(" ") ); // spacje, również true (każdy niepusty ciąg znaków daje true) |
124 | 123 | ```
|
125 | 124 | ````
|
126 | 125 |
|
127 |
| -## Summary |
| 126 | +## Podsumowanie |
128 | 127 |
|
129 |
| -The three most widely used type conversions are to string, to number, and to boolean. |
| 128 | +Trzy najczęściej używane rzutowania dotyczą ciągów znaków, liczb i typów logicznych. |
130 | 129 |
|
131 |
| -**`String Conversion`** -- Occurs when we output something. Can be performed with `String(value)`. The conversion to string is usually obvious for primitive values. |
| 130 | +**`Rzutowanie do typu tekstowego`** -- Zachodzi, gdy coś wypisujemy na ekranie. Może zajść również przy użyciu funkcji `String(value)`. Wynik rzutowania do tekstu jest zazwyczaj oczywisty dla typów prostych. |
132 | 131 |
|
133 |
| -**`Numeric Conversion`** -- Occurs in math operations. Can be performed with `Number(value)`. |
| 132 | +**`Rzutowanie do typu liczbowego`** -- Zachodzi w operacjach matematycznych. Może zajść również przy użyciu funkcji `Number(value)`. |
134 | 133 |
|
135 |
| -The conversion follows the rules: |
| 134 | +Rzutowanie to jest zgodne z zasadami: |
136 | 135 |
|
137 |
| -| Value | Becomes... | |
| 136 | +| Wartość | Otrzymamy... | |
138 | 137 | |-------|-------------|
|
139 | 138 | |`undefined`|`NaN`|
|
140 | 139 | |`null`|`0`|
|
141 | 140 | |<code>true / false</code> | `1 / 0` |
|
142 |
| -| `string` | The string is read "as is", whitespaces from both sides are ignored. An empty string becomes `0`. An error gives `NaN`. | |
| 141 | +| `string` | Tekst jest odczytywany "jak leci", białe znaki na obydwóch końcach są ignorowane. Pusty ciąg znaków staje się `0`. Błąd konwersji zwraca `NaN`.| |
143 | 142 |
|
144 |
| -**`Boolean Conversion`** -- Occurs in logical operations. Can be performed with `Boolean(value)`. |
| 143 | +**`Rzutowanie do typu logicznego`** -- Zachodzi w operacjach logicznych. Może zajść również przy użyciu funkcji `Boolean(value)`. |
145 | 144 |
|
146 |
| -Follows the rules: |
| 145 | +Rzutowanie jest zgodne z zasadami: |
147 | 146 |
|
148 |
| -| Value | Becomes... | |
| 147 | +| Wartość | Otrzymamy... | |
149 | 148 | |-------|-------------|
|
150 | 149 | |`0`, `null`, `undefined`, `NaN`, `""` |`false`|
|
151 |
| -|any other value| `true` | |
| 150 | +|Każda inna wartość| `true` | |
152 | 151 |
|
153 | 152 |
|
154 |
| -Most of these rules are easy to understand and memorize. The notable exceptions where people usually make mistakes are: |
| 153 | +Większość z tych zasad jest łatwa do zrozumienia i zapamiętania. Warte uwagi, najczęściej popełnianie błędy to: |
155 | 154 |
|
156 |
| -- `undefined` is `NaN` as a number, not `0`. |
157 |
| -- `"0"` and space-only strings like `" "` are true as a boolean. |
| 155 | +- `undefined` rzutowane na typ liczbowy daje `NaN`, a nie `0`. |
| 156 | +- `"0"` i spacja w ciągu znaków np. `" "` rzutowane na typ logiczny dadzą `true`. |
158 | 157 |
|
159 |
| -Objects aren't covered here. We'll return to them later in the chapter <info:object-toprimitive> that is devoted exclusively to objects after we learn more basic things about JavaScript. |
| 158 | +Nie omówiliśmy tu obiektów. Wrócimy do nich później w rozdziale pt. "<info:object-toprimitive>", gdy już poznamy więcej podstaw JavaScriptu. |
0 commit comments