Zoeken…
Opmerkingen
Sommige talen vereisen dat u van tevoren definieert wat voor soort variabele u aangeeft. JavaScript doet dat niet; het zal proberen dat zelf uit te zoeken. Soms kan dit onverwacht gedrag veroorzaken.
Als we de volgende HTML gebruiken
<span id="freezing-point">0</span>
En op te halen de inhoud ervan door middel van JS, zal het niet converteren naar een getal, hoewel men zou kunnen verwachten dat het. Als we het volgende fragment gebruiken, zou men kunnen verwachten dat boilingPoint
100
. JavaScript zal echter moreHeat
converteren naar een string en de twee string samenvoegen; het resultaat is 0100
.
var el = document.getElementById('freezing-point');
var freezingPoint = el.textContent || el.innerText;
var moreHeat = 100;
var boilingPoint = freezingPoint + moreHeat;
We kunnen dit oplossen door freezingPoint
expliciet naar een nummer te converteren.
var el = document.getElementById('freezing-point');
var freezingPoint = Number(el.textContent || el.innerText);
var boilingPoint = freezingPoint + moreHeat;
In de eerste regel converteren we "0"
(de string) naar 0
(het nummer) voordat we het opslaan. Na het toevoegen krijgt u het verwachte resultaat ( 100
).
Een string omzetten naar een nummer
Number('0') === 0
Number('0')
converteert de string ( '0'
) naar een nummer ( 0
)
Een kortere, maar minder duidelijke vorm:
+'0' === 0
De operator unary +
doet niets aan getallen, maar converteert iets anders naar een getal.
Interessant is dat +(-12) === -12
.
parseInt('0', 10) === 0
parseInt('0', 10)
converteert de string ( '0'
) naar een getal ( 0
), vergeet het tweede argument niet, namelijk radix. Indien niet gegeven, kan parseInt een string naar een verkeerd nummer converteren.
Een getal omzetten in een tekenreeks
String(0) === '0'
String(0)
converteert het getal ( 0
) naar een string ( '0'
).
Een kortere, maar minder duidelijke vorm:
'' + 0 === '0'
Dubbele ontkenning (!! x)
De dubbele ontkenning !!
is geen afzonderlijke JavaScript-operator noch een speciale syntaxis, maar eerder een reeks van twee ontkenningen. Het wordt gebruikt om de waarde van elke soort zetten op de betrokken true
of false
Booleaanse waarde naargelang het truthy of falsy.
!!1 // true
!!0 // false
!!undefined // false
!!{} // true
!![] // true
De eerste negatie converteert waarde false
als het truthy en true
of is falsy. De tweede ontkenning werkt dan op een normale Booleaanse waarde. Samen zetten ze elke waarheidswaarde om in true
en elke valse waarde in false
.
Veel professionals vinden de praktijk van het gebruik van dergelijke syntaxis echter onaanvaardbaar en raden eenvoudiger alternatieven aan om te lezen, zelfs als ze langer moeten schrijven:
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
Het gebruik van !!x
wordt als een slechte oefening beschouwd vanwege de volgende redenen:
- Stilistisch lijkt het misschien een aparte speciale syntaxis, terwijl het in feite niets anders doet dan twee opeenvolgende ontkenningen met impliciete conversie van het type.
- Het is beter om via de code informatie te geven over soorten waarden die zijn opgeslagen in variabelen en eigenschappen. Bijvoorbeeld,
x !== 0
zegt datx
waarschijnlijk een getal is, terwijl!!x
niet zo'n voordeel oplevert voor lezers van de code. - Het gebruik van
Boolean(x)
zorgt voor vergelijkbare functionaliteit en is een meer expliciete conversie van het type.
Impliciete conversie
JavaScript probeert bij gebruik automatisch variabelen om te zetten in meer geschikte typen. Het wordt meestal geadviseerd om conversies expliciet te doen (zie andere voorbeelden), maar het is nog steeds de moeite waard om te weten welke conversies impliciet plaatsvinden.
"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();
Enkele van de moeilijkere onderdelen:
!"0" === false // "0" got converted to true, then reversed.
!"false" === false // "false" converted to true, then reversed.
Een getal converteren naar een Boolean
Boolean(0) === false
Boolean(0)
converteert het getal 0
naar een Booleaanse waarde false
.
Een kortere, maar minder duidelijke vorm:
!!0 === false
Een string omzetten naar een Boolean
Om een string om te zetten naar boolean gebruik
Boolean(myString)
of de kortere maar minder duidelijke vorm
!!myString
Alle tekenreeksen behalve de lege tekenreeks (met lengte nul) worden als booleans als true
geëvalueerd.
Boolean('') === false // is true
Boolean("") === false // is true
Boolean('0') === false // is false
Boolean('any_nonempty_string') === true // is true
Geheel getal voor zweven
In JavaScript worden alle nummers intern weergegeven als drijvers. Dit betekent dat alleen het gebruik van uw gehele getal als float het enige is dat moet worden gedaan om het te converteren.
Zweven naar geheel getal
Om een float naar een geheel getal te converteren, biedt JavaScript meerdere methoden.
De floor
functie retourneert het eerste gehele getal kleiner dan of gelijk aan de float.
Math.floor(5.7); // 5
De ceil
retourneert het eerste gehele getal groter dan of gelijk aan de float.
Math.ceil(5.3); // 6
De round
functie rondt de vlotter af.
Math.round(3.2); // 3
Math.round(3.6); // 4
Truncation ( trunc
) verwijdert de decimalen van de vlotter.
Math.trunc(3.7); // 3
Let op het verschil tussen truncatie ( trunc
) en floor
:
Math.floor(-3.1); // -4
Math.trunc(-3.1); // -3
String omzetten in zwevend
parseFloat
accepteert een string als een argument dat het converteert naar een float /
parseFloat("10.01") // = 10.01
Converteren naar boolean
Boolean(...)
converteert elk gegevenstype naar true
of 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
Lege tekenreeksen en het getal 0 worden omgezet in onwaar, en alle andere worden omgezet in waar.
Een kortere, maar minder duidelijke vorm:
!!"true" === true
!!"false" === true
!!-1 === true
!!1 === true
!!0 === false
!!"" === false
!!"1" === true
!!"0" === true
!!{} === true
!![] === true
Deze kortere vorm maakt gebruik van een impliciete conversie van het type met de logische NOT-operator twee keer, zoals beschreven in http://www.riptutorial.com/javascript/example/3047/double-negation----x-
Hier is de complete lijst met booleaanse conversies uit de ECMAScript-specificatie
- als
myArg
van het typeundefined
ofnull
dan isBoolean(myArg) === false
- als
myArg
van het typeboolean
danBoolean(myArg) === myArg
- Als
myArg
typenumber
danBoolean(myArg) === false
wanneermyArg
is+0
,‑0
, ofNaN
; anderstrue
- als
myArg
van het typestring
danBoolean(myArg) === false
alsmyArg
de lege string is (de lengte is nul); anderstrue
- als
myArg
van het typesymbol
ofobject
dan isBoolean(myArg) === true
Waarden die worden omgezet naar false
als booleans worden genoemd falsy (en alle anderen worden genoemd truthy). Zie Vergelijkingsbewerkingen .
Converteer een array naar een string
Array.join(separator)
kan worden gebruikt om een array als een string uit te voeren, met een configureerbaar scheidingsteken.
Standaard (scheidingsteken = ","):
["a", "b", "c"].join() === "a,b,c"
Met een stringscheider:
[1, 2, 3, 4].join(" + ") === "1 + 2 + 3 + 4"
Met een blanco scheidingsteken:
["B", "o", "b"].join("") === "Bob"
Van array naar string met behulp van array-methoden
Op deze manier lijkt het nuttig omdat u een anonieme functie gebruikt om iets te bereiken waarmee u het kunt doen met join (); Maar als u iets aan de strings moet maken terwijl u de array naar String converteert, kan dit handig zijn.
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"
Primitieve naar Primitieve conversietabel
Waarde | Omgezet naar String | Omgezet naar nummer | Omgezet naar Boolean |
---|---|---|---|
undefinded | "Undefined" | NaN | vals |
nul | "nul" | 0 | vals |
waar | "True" | 1 | |
vals | "False" | 0 | |
NaN | "NaN" | vals | |
"" lege string | 0 | vals | |
"" | 0 | waar | |
"2.4" (numeriek) | 2.4 | waar | |
"test" (niet numeriek | NaN | waar | |
"0" | 0 | waar | |
"1" | 1 | waar | |
-0 | "0" | vals | |
0 | "0" | vals | |
1 | "1" | waar | |
Oneindigheid | "Oneindigheid" | waar | |
-Oneindigheid | "-Oneindigheid" | waar | |
[] | "" | 0 | waar |
[3] | "3" | 3 | waar |
['een'] | "een" | NaN | waar |
[ 'A', 'b'] | "A, b" | NaN | waar |
{} | "[Object Object]" | NaN | waar |
functie(){} | "functie(){}" | NaN | waar |
Vetgedrukte waarden benadrukken conversie die programmeurs misschien verrassend vinden
Om waarden expliciet te converteren, kunt u String () Number () Boolean () gebruiken