Ricerca…
Osservazioni
Alcune lingue richiedono di definire in anticipo quale tipo di variabile stai dichiarando. JavaScript non lo fa; cercherà di capirlo da solo. A volte questo può creare comportamenti imprevisti.
Se usiamo il seguente codice HTML
<span id="freezing-point">0</span>
E recuperare il suo contenuto attraverso JS, non verrà convertito in un numero, anche se ci si potrebbe aspettare a. Se usiamo il seguente frammento, ci si potrebbe aspettare che boilingPoint
sia 100
. Tuttavia, JavaScript convertirà più moreHeat
in una stringa e concatenerà le due stringhe; il risultato sarà 0100
.
var el = document.getElementById('freezing-point');
var freezingPoint = el.textContent || el.innerText;
var moreHeat = 100;
var boilingPoint = freezingPoint + moreHeat;
Possiamo risolvere questo problema convertendo esplicitamente freezingPoint
in un numero.
var el = document.getElementById('freezing-point');
var freezingPoint = Number(el.textContent || el.innerText);
var boilingPoint = freezingPoint + moreHeat;
Nella prima riga, convertiamo "0"
(la stringa) in 0
(il numero) prima di memorizzarlo. Dopo aver effettuato l'aggiunta, ottieni il risultato previsto ( 100
).
Convertire una stringa in un numero
Number('0') === 0
Number('0')
convertirà la stringa ( '0'
) in un numero ( 0
)
Una forma più breve, ma meno chiara:
+'0' === 0
L'operatore unario +
non fa nulla ai numeri, ma converte qualsiasi altra cosa in un numero.
È interessante notare che +(-12) === -12
.
parseInt('0', 10) === 0
parseInt('0', 10)
convertirà la stringa ( '0'
) in un numero ( 0
), non dimenticare il secondo argomento, che è radix. Se non specificato, parseInt potrebbe convertire la stringa in un numero errato.
Convertire un numero in una stringa
String(0) === '0'
String(0)
convertirà il numero ( 0
) in una stringa ( '0'
).
Una forma più breve, ma meno chiara:
'' + 0 === '0'
Doppia negazione (!! x)
La doppia negazione !!
non è un operatore JavaScript distinto né una sintassi speciale ma piuttosto solo una sequenza di due negazioni. Viene utilizzato per convertire il valore di qualsiasi tipo nel valore booleano true
o false
appropriato a seconda che si tratti di verità o falsità .
!!1 // true
!!0 // false
!!undefined // false
!!{} // true
!![] // true
La prima negazione converte qualsiasi valore in false
se è vero e true
se falsi . La seconda negazione funziona quindi su un valore booleano normale. Insieme convertire qualsiasi valore truthy al true
e qualsiasi valore falsy al false
.
Tuttavia, molti professionisti considerano inaccettabile l'utilizzo di tale sintassi e raccomandano soluzioni più semplici da leggere, anche se sono più lunghe da scrivere:
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
L'utilizzo di !!x
è considerato scarsa pratica a causa dei seguenti motivi:
- Stilisticamente può sembrare una sintassi speciale distinta mentre in realtà non fa altro che due negazioni consecutive con conversione di tipo implicita.
- È meglio fornire informazioni sui tipi di valori memorizzati in variabili e proprietà attraverso il codice. Ad esempio,
x !== 0
dice chex
è probabilmente un numero, mentre!!x
non trasmette alcun vantaggio ai lettori del codice. - L'utilizzo di
Boolean(x)
consente funzionalità simili ed è una conversione più esplicita di tipo.
Conversione implicita
JavaScript proverà a convertire automaticamente le variabili in tipi più appropriati dopo l'uso. Di solito è consigliabile eseguire le conversioni in modo esplicito (vedere altri esempi), ma vale comunque la pena conoscere quali conversioni avvengono implicitamente.
"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();
Alcune delle parti più complicate:
!"0" === false // "0" got converted to true, then reversed.
!"false" === false // "false" converted to true, then reversed.
Convertire un numero in un booleano
Boolean(0) === false
Boolean(0)
convertirà il numero 0
in un valore booleano false
.
Una forma più breve, ma meno chiara:
!!0 === false
Convertire una stringa in un booleano
Per convertire una stringa in uso booleano
Boolean(myString)
o la forma più breve ma meno chiara
!!myString
Tutte le stringhe tranne la stringa vuota (di lunghezza zero) vengono valutate come true
booleane.
Boolean('') === false // is true
Boolean("") === false // is true
Boolean('0') === false // is false
Boolean('any_nonempty_string') === true // is true
Integer to Float
In JavaScript, tutti i numeri sono rappresentati internamente come float. Ciò significa che è sufficiente utilizzare il numero intero come float per convertirlo.
Passa a numero intero
Per convertire un float in un intero, JavaScript fornisce più metodi.
La funzione floor
restituisce il primo intero inferiore o uguale al float.
Math.floor(5.7); // 5
La funzione ceil
restituisce il primo intero maggiore o uguale al float.
Math.ceil(5.3); // 6
La funzione round
arrotonda il galleggiante.
Math.round(3.2); // 3
Math.round(3.6); // 4
Truncation ( trunc
) rimuove i decimali dal float.
Math.trunc(3.7); // 3
Notare la differenza tra troncamento ( trunc
) e floor
:
Math.floor(-3.1); // -4
Math.trunc(-3.1); // -3
Converti una stringa in float
parseFloat
accetta una stringa come argomento che converte in un float /
parseFloat("10.01") // = 10.01
Conversione in booleano
Boolean(...)
convertirà qualsiasi tipo di dati in true
o 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
Le stringhe vuote e il numero 0 saranno convertite in false e tutte le altre verranno convertite in true.
Una forma più breve, ma meno chiara:
!!"true" === true
!!"false" === true
!!-1 === true
!!1 === true
!!0 === false
!!"" === false
!!"1" === true
!!"0" === true
!!{} === true
!![] === true
Questa forma più breve sfrutta la conversione di tipo implicita utilizzando l'operatore logico NOT due volte, come descritto in http://www.Scriptutorial.com/javascript/example/3047/double-negation----x-
Ecco l'elenco completo delle conversioni booleane dalla specifica ECMAScript
- se
myArg
di tipoundefined
onull
thenBoolean(myArg) === false
- se
myArg
di tipoboolean
poiBoolean(myArg) === myArg
- se
myArg
di tiponumber
poiBoolean(myArg) === false
semyArg
è+0
,‑0
oNaN
; altrimentitrue
- se
myArg
di tipostring
thenBoolean(myArg) === false
ifmyArg
è la String vuota (la sua lunghezza è zero); altrimentitrue
- se
myArg
di tiposymbol
oobject
thenBoolean(myArg) === true
I valori convertiti in false
come booleani sono chiamati falsy (e tutti gli altri sono chiamati truthy ). Vedi le operazioni di confronto .
Convertire una matrice in una stringa
Array.join(separator)
può essere utilizzato per generare un array come stringa, con un separatore configurabile.
Predefinito (separatore = ","):
["a", "b", "c"].join() === "a,b,c"
Con un separatore di stringhe:
[1, 2, 3, 4].join(" + ") === "1 + 2 + 3 + 4"
Con un separatore vuoto:
["B", "o", "b"].join("") === "Bob"
Matrice su stringa utilizzando metodi array
In questo modo, potrebbe sembrare che ci siano degli utenti perché si sta utilizzando una funzione anonima per realizzare qualcosa che si può fare con join (); Ma se hai bisogno di creare qualcosa per le stringhe mentre stai convertendo l'array in stringa, questo può essere utile.
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"
Tabella di conversione primitiva a primitiva
Valore | Convertito in stringa | Convertito in numero | Convertito in booleano |
---|---|---|---|
undefinded | "non definito" | NaN | falso |
nullo | "nullo" | 0 | falso |
vero | "vero" | 1 | |
falso | "False" | 0 | |
NaN | "Nan" | falso | |
"" stringa vuota | 0 | falso | |
"" | 0 | vero | |
"2.4" (numerico) | 2.4 | vero | |
"test" (non numerico | NaN | vero | |
"0" | 0 | vero | |
"1" | 1 | vero | |
-0 | "0" | falso | |
0 | "0" | falso | |
1 | "1" | vero | |
Infinito | "Infinito" | vero | |
-Infinito | "-Infinito" | vero | |
[] | "" | 0 | vero |
[3] | "3" | 3 | vero |
['un'] | "un" | NaN | vero |
[ 'A', 'b'] | "A, b" | NaN | vero |
{} | "[oggetto Oggetto]" | NaN | vero |
funzione(){} | "funzione(){}" | NaN | vero |
I valori in grassetto evidenziano la conversione che i programmatori possono trovare sorprendente
Per convertire in modo esplicito i valori puoi usare String () Number () Boolean ()