Szukaj…
Uwagi
Niektóre języki wymagają wcześniejszego określenia, jaką zmienną deklarujesz. JavaScript tego nie robi; spróbuje to rozwiązać samodzielnie. Czasami może to spowodować nieoczekiwane zachowanie.
Jeśli użyjemy następującego HTML
<span id="freezing-point">0</span>
I odzyskaj jego zawartość przez JS, nie przekonwertuje go na liczbę, nawet jeśli można się tego spodziewać. Jeśli użyjemy następującego fragmentu boilingPoint
, można oczekiwać, że boilingPoint
ma wartość 100
. Jednak JavaScript skonwertuje moreHeat
na ciąg i połączy dwa ciągi; wynikiem będzie 0100
.
var el = document.getElementById('freezing-point');
var freezingPoint = el.textContent || el.innerText;
var moreHeat = 100;
var boilingPoint = freezingPoint + moreHeat;
Możemy to naprawić, jawnie przekształcając freezingPoint
w liczbę.
var el = document.getElementById('freezing-point');
var freezingPoint = Number(el.textContent || el.innerText);
var boilingPoint = freezingPoint + moreHeat;
W pierwszym wierszu konwertujemy "0"
(ciąg znaków) na 0
(liczbę) przed zapisaniem. Po dodaniu otrzymasz oczekiwany wynik ( 100
).
Konwertowanie ciągu na liczbę
Number('0') === 0
Number('0')
zamieni ciąg ( '0'
) na liczbę ( 0
)
Krótsza, ale mniej przejrzysta forma:
+'0' === 0
Jednoargumentowy operator +
nic nie robi na liczby, ale konwertuje wszystko inne na liczbę.
Co ciekawe, +(-12) === -12
.
parseInt('0', 10) === 0
parseInt('0', 10)
przekształci ciąg ( '0'
) na liczbę ( 0
), nie zapomnij o drugim argumencie, którym jest podstawa. Jeśli nie zostanie podany, parseInt może przekonwertować ciąg znaków na niewłaściwy numer.
Konwertowanie liczby na ciąg
String(0) === '0'
String(0)
przekształci liczbę ( 0
) w ciąg ( '0'
).
Krótsza, ale mniej przejrzysta forma:
'' + 0 === '0'
Podwójna negacja (!! x)
Podwójna negacja !!
nie jest wyraźnym operatorem JavaScript ani specjalną składnią, ale raczej sekwencją dwóch negacji. Służy do konwertowania wartości dowolnego typu na odpowiednią true
lub false
wartość logiczną w zależności od tego, czy jest to prawda, czy fałsz .
!!1 // true
!!0 // false
!!undefined // false
!!{} // true
!![] // true
Pierwsza negacja przekształca każdą wartość na false
jeśli jest prawdą, i true
jeśli jest fałszem . Druga negacja działa wtedy na normalnej wartości logicznej. Razem przekształcić dowolną wartość truthy na true
i wszelkie falsy wartość false
.
Jednak wielu profesjonalistów uważa praktykę korzystania z takiej składni za niedopuszczalną i zaleca prostsze czytanie alternatyw, nawet jeśli mają dłuższe pisanie:
x !== 0 // instead of !!x in case x is a number
x != null // instead of !!x in case x is an object, a string, or an undefined
Użycie !!x
jest uważane za złą praktykę z następujących powodów:
- Stylistycznie może to wyglądać jak odrębna specjalna składnia, podczas gdy w rzeczywistości nie robi nic poza dwiema kolejnymi negacjami z niejawną konwersją typów.
- Lepiej jest podać informacje o typach wartości przechowywanych w zmiennych i właściwościach za pomocą kodu. Na przykład
x !== 0
mówi, żex
jest prawdopodobnie liczbą, podczas gdy!!x
nie przekazuje żadnej takiej korzyści czytelnikom kodu. - Użycie
Boolean(x)
pozwala na podobną funkcjonalność i jest bardziej wyraźną konwersją typu.
Niejawna konwersja
JavaScript będzie próbował automatycznie przekonwertować zmienne na bardziej odpowiednie typy po użyciu. Zwykle zaleca się wykonywanie konwersji jawnie (patrz inne przykłady), ale nadal warto wiedzieć, które konwersje zachodzą niejawnie.
"1" + 5 === "15" // 5 got converted to string.
1 + "5" === "15" // 1 got converted to string.
1 - "5" === -4 // "5" got converted to a number.
alert({}) // alerts "[object Object]", {} got converted to string.
!0 === true // 0 got converted to boolean
if ("hello") {} // runs, "hello" got converted to boolean.
new Array(3) === ",,"; // Return true. The array is converted to string - Array.toString();
Niektóre trudniejsze części:
!"0" === false // "0" got converted to true, then reversed.
!"false" === false // "false" converted to true, then reversed.
Konwertowanie liczby na wartość logiczną
Boolean(0) === false
Boolean(0)
przekształci liczbę 0
w logiczną wartość false
.
Krótsza, ale mniej przejrzysta forma:
!!0 === false
Konwertowanie łańcucha na wartość logiczną
Aby przekonwertować ciąg na wartość logiczną, użyj
Boolean(myString)
lub krótsza, ale mniej przejrzysta forma
!!myString
Wszystkie ciągi oprócz pustego ciągu (o długości zero) są sprawdzane jako true
jako logiczne.
Boolean('') === false // is true
Boolean("") === false // is true
Boolean('0') === false // is false
Boolean('any_nonempty_string') === true // is true
Integer to Float
W JavaScript wszystkie liczby są wewnętrznie reprezentowane jako liczby zmiennoprzecinkowe. Oznacza to, że po prostu użycie liczby całkowitej jako liczby zmiennoprzecinkowej jest wszystkim, co należy zrobić, aby ją przekonwertować.
Pływak do liczby całkowitej
Aby przekonwertować liczbę zmiennoprzecinkową na liczbę całkowitą, JavaScript udostępnia wiele metod.
Funkcja floor
zwraca pierwszą liczbę całkowitą mniejszą lub równą wartości zmiennoprzecinkowej.
Math.floor(5.7); // 5
Funkcja ceil
zwraca pierwszą liczbę całkowitą większą lub równą liczby zmiennoprzecinkowej.
Math.ceil(5.3); // 6
round
funkcja zaokrągla liczbę zmiennoprzecinkową.
Math.round(3.2); // 3
Math.round(3.6); // 4
Obcięcie ( trunc
) usuwa ułamki dziesiętne z pływaka.
Math.trunc(3.7); // 3
Zauważenie różnicy między obcinania ( trunc
) i floor
:
Math.floor(-3.1); // -4
Math.trunc(-3.1); // -3
Konwertuj ciąg na liczbę zmiennoprzecinkową
parseFloat
akceptuje ciąg jako argument, który konwertuje na zmiennoprzecinkowe /
parseFloat("10.01") // = 10.01
Konwersja na wartość logiczną
Boolean(...)
przekształci dowolny typ danych na true
lub false
.
Boolean("true") === true
Boolean("false") === true
Boolean(-1) === true
Boolean(1) === true
Boolean(0) === false
Boolean("") === false
Boolean("1") === true
Boolean("0") === true
Boolean({}) === true
Boolean([]) === true
Puste łańcuchy i cyfra 0 zostaną zamienione na false, a wszystkie pozostałe zostaną przekonwertowane na true.
Krótsza, ale mniej przejrzysta forma:
!!"true" === true
!!"false" === true
!!-1 === true
!!1 === true
!!0 === false
!!"" === false
!!"1" === true
!!"0" === true
!!{} === true
!![] === true
Ta krótsza forma korzysta z niejawnej konwersji typu za pomocą logicznego operatora NOT dwa razy, jak opisano w http://www.riptutorial.com/javascript/example/3047/double-negation----x-
Oto pełna lista konwersji boolowskich ze specyfikacji ECMAScript
- jeśli
myArg
typu jestundefined
lubnull
toBoolean(myArg) === false
- jeśli
myArg
typuboolean
toBoolean(myArg) === myArg
- Jeśli
myArg
typunumber
następnieBoolean(myArg) === false
jeślimyArg
jest+0
,‑0
lubNaN
; w przeciwnym razietrue
- jeśli
myArg
typustring
toBoolean(myArg) === false
jeślimyArg
jest pustymmyArg
(jego długość wynosi zero); w przeciwnym razietrue
- jeśli
myArg
typusymbol
lubobject
toBoolean(myArg) === true
Wartości przekształcane na false
jako booleany nazywane są fałszem (a wszystkie inne nazywane są prawdą ). Zobacz operacje porównania .
Konwertuj tablicę na ciąg
Array.join(separator)
może być użyty do wyprowadzenia tablicy jako łańcucha, z konfigurowalnym separatorem.
Domyślnie (separator = „,”):
["a", "b", "c"].join() === "a,b,c"
Z separatorem ciągów:
[1, 2, 3, 4].join(" + ") === "1 + 2 + 3 + 4"
Z pustym separatorem:
["B", "o", "b"].join("") === "Bob"
Array to String przy użyciu metod tablicowych
Ten sposób może wydawać się przydatny, ponieważ używasz anonimowej funkcji do osiągnięcia czegoś, co możesz zrobić za pomocą join (); Ale jeśli musisz coś zrobić z łańcuchami podczas konwersji tablicy na łańcuch, może to być przydatne.
var arr = ['a', 'á', 'b', 'c']
function upper_lower (a, b, i) {
//...do something here
b = i & 1 ? b.toUpperCase() : b.toLowerCase();
return a + ',' + b
}
arr = arr.reduce(upper_lower); // "a,Á,b,C"
Tabela konwersji pierwotnej na pierwotną
Wartość | Przekształcony w ciąg | Przekształcony na liczbę | Przekształcony w wartość logiczną |
---|---|---|---|
niezdecydowany | "nieokreślony" | NaN | fałszywy |
zero | "zero" | 0 | fałszywy |
prawdziwe | "prawdziwe" | 1 | |
fałszywy | "fałszywy" | 0 | |
NaN | „NaN” | fałszywy | |
"" pusta struna | 0 | fałszywy | |
„” | 0 | prawdziwe | |
„2.4” (numerycznie) | 2.4 | prawdziwe | |
„test” (nieliczbowy | NaN | prawdziwe | |
„0” | 0 | prawdziwe | |
„1” | 1 | prawdziwe | |
-0 | „0” | fałszywy | |
0 | „0” | fałszywy | |
1 | „1” | prawdziwe | |
Nieskończoność | "Nieskończoność" | prawdziwe | |
-Nieskończoność | "-Nieskończoność" | prawdziwe | |
[] | „” | 0 | prawdziwe |
[3] | „3” | 3) | prawdziwe |
['za'] | "za" | NaN | prawdziwe |
[„a”, „b”] | „a, b” | NaN | prawdziwe |
{} | „[Object Object]” | NaN | prawdziwe |
funkcjonować(){} | "funkcjonować(){}" | NaN | prawdziwe |
Pogrubione wartości podkreślają konwersję, którą programiści mogą uznać za zaskakującą
Aby przekonwertować wartości jawnie, możesz użyć String () Number () Boolean ()