Buscar..
Observaciones
Algunos idiomas requieren que defina con anticipación qué tipo de variable está declarando. JavaScript no hace eso; tratará de darse cuenta de eso por su cuenta. A veces esto puede crear un comportamiento inesperado.
Si utilizamos el siguiente HTML
<span id="freezing-point">0</span>
Y recuperar su contenido a través de JS, no lo convertirá a un número, a pesar de que uno podría esperar que lo haga. Si usamos el siguiente fragmento de boilingPoint
, se podría esperar que boilingPoint
sea 100
. Sin embargo, JavaScript convertirá moreHeat
en una cadena y concatenará las dos cadenas; El resultado será 0100
.
var el = document.getElementById('freezing-point');
var freezingPoint = el.textContent || el.innerText;
var moreHeat = 100;
var boilingPoint = freezingPoint + moreHeat;
Podemos solucionar este problema convirtiendo freezingPoint
en un número.
var el = document.getElementById('freezing-point');
var freezingPoint = Number(el.textContent || el.innerText);
var boilingPoint = freezingPoint + moreHeat;
En la primera línea, convertimos "0"
(la cadena) a 0
(el número) antes de almacenarlo. Después de hacer la adición, obtienes el resultado esperado ( 100
).
Convertir una cadena en un número
Number('0') === 0
Number('0')
convertirá la cadena ( '0'
) en un número ( 0
)
Una forma más corta, pero menos clara:
+'0' === 0
El operador unario +
no hace nada a los números, pero convierte cualquier otra cosa en un número.
Curiosamente, +(-12) === -12
.
parseInt('0', 10) === 0
parseInt('0', 10)
convertirá la cadena ( '0'
) en un número ( 0
), no olvide el segundo argumento, que es radix. Si no se proporciona, parseInt podría convertir la cadena a un número incorrecto.
Convertir un número en una cadena
String(0) === '0'
String(0)
convertirá el número ( 0
) en una cadena ( '0'
).
Una forma más corta, pero menos clara:
'' + 0 === '0'
Doble Negacion (!! x)
La doble negación !!
no es un operador de JavaScript distinto ni una sintaxis especial, sino más bien una secuencia de dos negaciones. Se utiliza para convertir el valor de cualquier tipo a su valor booleano true
o false
, dependiendo de si es verdadero o falso .
!!1 // true
!!0 // false
!!undefined // false
!!{} // true
!![] // true
La primera negación convierte cualquier valor en false
si es verdadero y true
si es falso . La segunda negación opera entonces en un valor booleano normal. Juntos se convierten a cualquier valor Truthy true
y cualquier valor Falsy a false
.
Sin embargo, muchos profesionales consideran que la práctica de usar tal sintaxis es inaceptable y recomiendan alternativas más sencillas de leer, incluso si son más largas para escribir:
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
El uso de !!x
se considera una mala práctica debido a las siguientes razones:
- Estilísticamente, puede parecer una sintaxis especial distinta, mientras que en realidad no hace nada más que dos negaciones consecutivas con conversión de tipo implícita.
- Es mejor proporcionar información sobre los tipos de valores almacenados en variables y propiedades a través del código. Por ejemplo,
x !== 0
dice quex
es probablemente un número, mientras que!!x
no transmite tal ventaja a los lectores del código. - El uso de
Boolean(x)
permite una funcionalidad similar y es una conversión de tipo más explícita.
Conversión implícita
JavaScript intentará convertir automáticamente las variables a tipos más apropiados al usarlas. Por lo general, se recomienda hacer conversiones explícitamente (ver otros ejemplos), pero aún así vale la pena saber qué conversiones tienen lugar implícitamente.
"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();
Algunas de las partes más complicadas:
!"0" === false // "0" got converted to true, then reversed.
!"false" === false // "false" converted to true, then reversed.
Convertir un número a un booleano
Boolean(0) === false
Boolean(0)
convertirá el número 0
en un false
booleano.
Una forma más corta, pero menos clara:
!!0 === false
Convertir una cadena a un booleano
Para convertir una cadena a uso booleano
Boolean(myString)
o la forma más corta pero menos clara
!!myString
Todas las cadenas, excepto la cadena vacía (de longitud cero) se evalúan como true
como booleanas.
Boolean('') === false // is true
Boolean("") === false // is true
Boolean('0') === false // is false
Boolean('any_nonempty_string') === true // is true
Entero para flotar
En JavaScript, todos los números se representan internamente como flotadores. Esto significa que simplemente usar su entero como un flotador es todo lo que se debe hacer para convertirlo.
Flotar a entero
Para convertir un flotante en un entero, JavaScript proporciona múltiples métodos.
La función de floor
devuelve el primer entero menor o igual que el flotador.
Math.floor(5.7); // 5
La función ceil
devuelve el primer entero mayor o igual que el flotador.
Math.ceil(5.3); // 6
La función round
redondea el flotador.
Math.round(3.2); // 3
Math.round(3.6); // 4
El truncamiento ( trunc
) elimina los decimales del flotador.
Math.trunc(3.7); // 3
Nótese la diferencia entre el truncamiento ( trunc
) y floor
:
Math.floor(-3.1); // -4
Math.trunc(-3.1); // -3
Convertir cadena a flotar
parseFloat
acepta una cadena como un argumento que convierte en un float /
parseFloat("10.01") // = 10.01
Convertir a booleano
Boolean(...)
convertirá cualquier tipo de datos en 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
Las cadenas vacías y el número 0 se convertirán a falso, y todos los demás se convertirán a verdadero.
Una forma más corta, pero menos clara:
!!"true" === true
!!"false" === true
!!-1 === true
!!1 === true
!!0 === false
!!"" === false
!!"1" === true
!!"0" === true
!!{} === true
!![] === true
Esta forma más corta aprovecha la conversión de tipo implícita utilizando el operador lógico NO dos veces, como se describe en http://www.riptutorial.com/javascript/example/3047/double-negation----x-
Aquí está la lista completa de las conversiones booleanas de la especificación ECMAScript
- si
myArg
de tipoundefined
onull
entoncesBoolean(myArg) === false
- si
myArg
de tipoboolean
entoncesBoolean(myArg) === myArg
- si
myArg
de tiponumber
entoncesBoolean(myArg) === false
simyArg
es+0
,‑0
, oNaN
; de lo contrariotrue
- si
myArg
de tipostring
entoncesBoolean(myArg) === false
simyArg
es la cadena vacía (su longitud es cero); de lo contrariotrue
- si
myArg
de tiposymbol
uobject
entoncesBoolean(myArg) === true
Los valores que se convierten en false
como booleanos se denominan falsy (y todos los demás se llaman verdad ). Ver Operaciones de comparación .
Convertir una matriz en una cadena
Array.join(separator)
se puede usar para generar una matriz como una cadena, con un separador configurable.
Predeterminado (separador = ","):
["a", "b", "c"].join() === "a,b,c"
Con un separador de hilo:
[1, 2, 3, 4].join(" + ") === "1 + 2 + 3 + 4"
Con un separador en blanco:
["B", "o", "b"].join("") === "Bob"
Array to String usando métodos de array
De esta manera, puede parecerle útil porque está utilizando una función anónima para lograr algo con lo que puede hacer con join (); Pero si necesita hacer algo con las cadenas mientras está convirtiendo la matriz en cadena, esto puede ser útil.
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"
Tabla de conversión de primitivo a primitivo
Valor | Convertido a cadena | Convertido a número | Convertido a booleano |
---|---|---|---|
indefinido | "indefinido" | Yaya | falso |
nulo | "nulo" | 0 | falso |
cierto | "cierto" | 1 | |
falso | "falso" | 0 | |
Yaya | "Yaya" | falso | |
"" cuerda vacía | 0 | falso | |
"" | 0 | cierto | |
"2.4" (numérico) | 2.4 | cierto | |
"prueba" (no numérico | Yaya | cierto | |
"0" | 0 | cierto | |
"1" | 1 | cierto | |
-0 | "0" | falso | |
0 | "0" | falso | |
1 | "1" | cierto | |
infinito | "Infinito" | cierto | |
-Infinito | "-Infinito" | cierto | |
[] | "" | 0 | cierto |
[3] | "3" | 3 | cierto |
['una'] | "una" | Yaya | cierto |
['a', 'b'] | "a, b" | Yaya | cierto |
{} | "[objeto Objeto]" | Yaya | cierto |
función(){} | "función(){}" | Yaya | cierto |
Los valores en negrita resaltan la conversión que los programadores pueden encontrar sorprendente
Para convertir valores explícitos, puede usar String () Number () Boolean ()