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 !== 0zegt datxwaarschijnlijk een getal is, terwijl!!xniet 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
myArgvan het typeundefinedofnulldan isBoolean(myArg) === false - als
myArgvan het typebooleandanBoolean(myArg) === myArg - Als
myArgtypenumberdanBoolean(myArg) === falsewanneermyArgis+0,‑0, ofNaN; anderstrue - als
myArgvan het typestringdanBoolean(myArg) === falsealsmyArgde lege string is (de lengte is nul); anderstrue - als
myArgvan het typesymbolofobjectdan 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