Konwersja typów w JavaScript

Number() konwersja liczb,String() konwersja ciągów znaków,Boolean() konwersja wartości logicznych.

Typy danych JavaScript

W JavaScript istnieją pięć typów danych, które mogą zawierać wartości:

  • ciąg znaków (string)
  • liczba (number)
  • logiczny (boolean)
  • obiekt (object)
  • funkcja (function)

Istnieją trzy typy obiektów:

  • obiekt (Object)
  • data (Date)
  • tablica (Array)

Również istnieją dwa typy danych, które nie mogą zawierać wartości:

  • null
  • undefined

operator typeof

Możesz użyć typeof operator do określenia typu danych zmiennej w JavaScript.

przykład

typeof "Bill"                 // zwraca "string"
typeof 3.14                   // zwraca "number"
typeof NaN                    // zwraca "number"
typeof false                  // Zwraca "boolean"
typeof [1,2,3,4]              // Zwraca "object"
typeof {name:'Bill', age:62}  // Zwraca "object"
typeof new Date()             // Zwraca "object"
typeof function () {}         // Zwraca "function"
typeof myCar                  // Zwraca "undefined" *
typeof null                   // Zwraca "object"

Spróbuj sam

Uwaga:

  • Typ danych NaN to liczba
  • Typ danych tablicy to obiekt
  • Typ danych daty to obiekt
  • Typ danych null to obiekt
  • Typ danych nieprzypisanej zmiennej jest undefined
  • Typ danych zmiennej, która nie została przypisana, jest również undefined

Nie możesz użyć typeof do sprawdzenia, czy obiekt JavaScript jest tablicą (lub datą).

Typ danych typeof

typeof Operator nie jest zmienną. Należy do operatorów. Operator (np. + - * /) brak typu danych.

ale,typeof zawsze będzieZwraca ciąg znakówzawiera typy operandów.

Atrybut constructor

constructor Właściwość zwraca funkcję konstruktora wszystkich zmiennych JavaScript.

przykład

function String() { [native code] }
function Number() { [native code] }
function Boolean() { [native code] }
function Array() { [native code] }
function Object() { [native code] }
new Date().constructor             // Zwraca "function Date()    { [native code] }"
function () {}.constructor         // Zwraca "function Function(){ [native code] }"

Spróbuj sam

Możesz sprawdzić constructor Atrybut do określenia, czy dany obiekt jest tablicą (zawiera słowo "Array"):

przykład

function isArray(myArray) {
    return myArray.constructor.toString().indexOf("Array") > -1;
}

Spróbuj sam

Lub bardziej prosto, możesz sprawdzić, czy obiekt jest funkcją tablicy:

przykład

function isArray(myArray) {
    return myArray.constructor === Array;
}

Spróbuj sam

Możesz sprawdzić constructor Atrybut do określenia, czy dany obiekt jest obiektem daty (zawiera słowo "Date"):

przykład

function isDate(myDate) {
    return myDate.constructor.toString().indexOf("Date") > -1;
}

Spróbuj sam

Lub bardziej prosto, możesz sprawdzić, czy obiekt jest funkcją daty:

przykład

function isDate(myDate) {
    return myDate.constructor === Date;
}

Spróbuj sam

Konwersja typów w JavaScript

Zmienne JavaScript mogą być przekształcane na nowe zmienne oraz inny typ danych:

  • Przez użycie funkcji JavaScript
  • Przez sam JavaScriptAutomatycznieKonwersja

Przekształcanie wartości liczbowych w ciągi znaków

Metoda globalna String() Można przekształcić liczbę w ciąg znaków.

Można go użyć do dowolnego typu liczby, tekstu, zmiennej lub wyrażenia:

przykład

String(x)         // Zwraca ciąg znaków z wartości liczbowej zmiennej x
String(123)       // Zwraca ciąg znaków z wartości liczbowej tekstowej 123
String(100 + 23)  // Zwraca ciąg znaków z wartości liczbowej z wyrażenia

Spróbuj sam

metody liczbowe toString() Podobnie.

przykład

x.toString()
(123).toString()
(100 + 23).toString()

Spróbuj sam

wmetody liczboweW tym rozdziale nauczysz się więcej metod, które można użyć do konwersji liczb na ciągi znaków:

metoda opis
toExponential() Zwraca ciąg znaków, który zaokrągla liczbę i zapisuje ją w formacie wykładniczym.
toFixed() Zwraca ciąg znaków, który zaokrągla liczbę i zapisuje ją z użyciem określonej liczby miejsc po przecinku.
toPrecision() Zwraca ciąg znaków, który zapisuje liczbę o określonej długości.

Przekształć logiczne w ciąg znaków

Metoda globalna String() można przekształcić logiczne w ciąg znaków.

String(false)        // zwraca "false"
String(true)         // zwraca "true"

metody logiczne toString() Podobnie.

false.toString()     // zwraca "false"
true.toString()      // zwraca "true"

Przekształć datę w ciąg znaków

Metoda globalna String() można przekształcić datę w ciąg znaków.

String(Date())      

Metody daty toString() Podobnie.

przykład

Date().toString()   

wMetody datyW tym rozdziale znajdziesz więcej metod, które można użyć do przekształcenia daty w ciąg znaków:

metoda opis
getDate() uzyskaj dzień jako liczbę (1-31)
getDay() lub tygodnie liczone jako liczby (0-6)
getFullYear() uzyskaj czterocyfrowy rok (yyyy)
getHours() uzyskaj godzinę (0-23)
getMilliseconds() uzyskaj milisekundy (0-999)
getMinutes() uzyskaj minuty (0-59)
getMonth() uzyskaj miesiąc (0-11)
getSeconds() uzyskaj sekundy (0-59)
getTime() uzyskaj czas (milisekundy od 1 stycznia 1970 roku)

Przekształć ciąg znaków w liczbę

Metoda globalna Number() można przekształcić ciąg znaków w liczbę.

ciąg znaków zawierający liczby (np. "3.14") przekształca się w liczbę (np. 3.14).

pusty ciąg znaków przekształca się w 0。

Inne ciągi znaków będą przekształcane w NaN(Nie liczba,nie liczba)。

Number("3.14")    // zwraca 3.14
Number(" ")       // zwraca 0
Number("")        // zwraca 0
Number("99 88")   // zwraca NaN

wmetody liczboweW tym rozdziale znajdziesz więcej metod, które można użyć do przekształcenia ciągu znaków w liczbę:

metoda opis
parseFloat() analizuje ciąg znaków i zwraca liczbę zmiennoprzecinkową.
parseInt() analizuje ciąg znaków i zwraca liczbę całkowitą.

jednorodny operator +

jednorodny + operatormożna użyć do przekształcenia zmiennej w liczbę:

przykład

var y = "5";      // y jest ciągami znaków
var x = + y;      // x jest liczbą

Spróbuj sam

jeśli zmienna nie może być przekształcona, nadal będzie liczbą, ale wartość będzie NaN(Nie liczba):

przykład

var y = "Bill";   // y jest ciągami znaków
var x = + y;      // x jest liczbą (NaN)

Spróbuj sam

Przekształcanie booleana na liczbę

Metoda globalna Number() Również można przekształcić boolean na liczbę.

Number(false)     // zwraca 0
Number(true)      // zwraca 1

Przekształcanie daty na liczbę

Metoda globalna Number() Można użyć go do przekształcenia daty na liczbę.

d = new Date();
Number(d)          

Metody daty getTime() Podobnie.

d = new Date();
d.getTime()        

Automatyczna konwersja typów

Jeśli JavaScript próbuje operować na rodzaju danych "błędny", próbuje przekształcić wartość na "poprawny" typ.

Wynik nie zawsze jest taki, jak się spodziewasz:

5 + null    // zwraca 5         ponieważ null jest konwertowane na 0
"5" + null  // zwraca "5null"   ponieważ null jest konwertowane na "null"
"5" + 2     // zwraca 52        ponieważ 2 jest konwertowane na "2"
"5" - 2     // zwraca 3         ponieważ "5" jest konwertowane na 5
"5" * "2"   // zwraca 10        ponieważ "5" i "2" są konwertowane na 5 i 2

Spróbuj sam

konwersję na ciąg znaków

JavaScript automatycznie wywołuje konwersję toString() Funkcja, gdy próbujesz "wypisać" obiekt lub zmienną:

document.getElementById("demo").innerHTML = myVar;
// Jeśli myVar = {name:"Fjohn"}  // toString konwertuje na "[object Object]"
// Jeśli myVar = [1,2,3,4]       // toString konwertuje na "1,2,3,4"
// Jeśli myVar = new Date()      // toString konwertuje na ""

Liczby i booleany również są konwertowane, ale nie jest to bardzo widoczne:

// Jeśli myVar = 123             // toString konwertuje na "123"
// Jeśli myVar = true            // toString konwertuje na "true"
// Jeśli myVar = false           // toString konwertuje na "false"

Tabela konwersji typów JavaScript

Poniższa tabela pokazuje wyniki konwersji różnych wartości JavaScript na liczby, ciągi znaków i wartości logiczne:

Wartość oryginalna Konwersja na liczbę Konwersja na ciąg znaków Konwersja na logiczne Spróbuj sam
false 0 "false" false Spróbuj sam
true 1 "true" true Spróbuj sam
0 0 "0" false Spróbuj sam
1 1 "1" true Spróbuj sam
"0" 0 "0" true Spróbuj sam
"000" 0 "000" true Spróbuj sam
"1" 1 "1" true Spróbuj sam
NaN NaN "NaN" false Spróbuj sam
Infinity Infinity "Infinity" true Spróbuj sam
-Infinity -Infinity "-Infinity" true Spróbuj sam
"" 0 "" false Spróbuj sam
"20" 20 "20" true Spróbuj sam
"twenty" NaN "twenty" true Spróbuj sam
[ ] 0 "" true Spróbuj sam
[20] 20 "20" true Spróbuj sam
[10,20] NaN "10,20" true Spróbuj sam
["twenty"] NaN "twenty" true Spróbuj sam
["ten","twenty"] NaN "ten,twenty" true Spróbuj sam
function(){} NaN "function(){}" true Spróbuj sam
{ } NaN "[object Object]" true Spróbuj sam
null 0 "null" false Spróbuj sam
undefined NaN "undefined" false Spróbuj sam

Wartości w cudzysłowie wskazują wartości stringowe.

Czerwone wartościIndykuje wartości, które (certain) programiści mogą nie chcieć.