Si convierte explícitamente un determinado tipo en otro tipo mediante una función o llamada a un método, se denomina conversión explícita y lo contrario se denomina conversión de tipo implícita. Las palabras "conversión de tipo de visualización" y "conversión de tipo implícita" no se encuentran en Google ni en Wikipedia. Llamémoslo así.
1. Conversiones de tipos implícitas en operaciones.
1. Operador “+”
Copie el código de código de la siguiente manera:
var a = 11, b = '22';
var c = a + b;
Aquí el motor primero convertirá a en la cadena "11" y luego la conectará con b, que se convierte en "1122". Algunas personas pueden preguntarse por qué no convertir b en el número 22 y luego realizar una suma aritmética, en cuyo caso c será 33. No hay ninguna razón cuando uno de los dos lados del operador "+" es un tipo numérico y el otro es un tipo de cadena, el motor js estipula realizar una concatenación de cadenas en lugar de una suma aritmética. Usando la función del operador "+", el número se puede convertir fácilmente en cadena. como
Copie el código de código de la siguiente manera:
var a = 11;
alerta(tipo de a); //-->número
un = un + '';
alerta(tipo de a); //-->cadena
2. operador "-"
"-" puede ser un operador unario (operación negativa) o un operador binario (operación de resta). como
Copie el código de código de la siguiente manera:
var a = 11, b = '5';
var c = a-b;
alerta(tipo de c); //--> número
Al contrario del "+" anterior, la cadena b se convertirá implícitamente en el número 5 y luego se realizará la resta aritmética. Con esta función, puede convertir fácilmente una cadena en un número
Copie el código de código de la siguiente manera:
var a = '11';
un = un - '';
alerta(tipo de a);// -->número
2. Conversiones de tipos implícitas en declaraciones
1, si
Copie el código de código de la siguiente manera:
var obj = {nombre:'jack'}
si(obj){
//hacer más
}
Aquí obj se convertirá implícitamente al tipo booleano.
2. mientras
Copie el código de código de la siguiente manera:
var obj = {nombre:'jack'}
mientras(obj){
//hacer más
}
Lo mismo que si
3. Conversión de tipo durante for in
Se produce una conversión implícita de identificador a cadena cuando se define un objeto literal.
Copie el código de código de la siguiente manera:
var persona = {'nombre':'jack',"edad":20,escuela:'PKU'};
for(var a en persona){
alerta(a + ": " + tipo de a);
}
Aquí, se agregan comillas simples/dobles al nombre y la edad respectivamente para enfatizar que son de tipo Cadena, y no se agregan comillas simples/dobles a la escuela. Recorremos las propiedades del objeto para ver su tipo. Se descubre que la escuela también se convierte implícitamente al tipo String.
El índice de la matriz es en realidad un tipo de cadena. Es sorprendente, pero es verdad. como
Copie el código de código de la siguiente manera:
var aria = [1,3,5,7];
para(var a en ary){
alerta(a + ": " + tipo de a);
}
3. Conversión de tipo implícita al alertar
Copie el código de código de la siguiente manera:
String.prototype.fn = function(){devolver esto};
var a = 'hola';
alert(tipo de a.fn()); //-->objeto
alerta(a.fn()); //-->hola
Se agrega un método fn al prototipo String, que devuelve esto. Sabemos que esto puede entenderse como un objeto de instancia de la clase actual. Dado que es un objeto, typeof a.fn() naturalmente devuelve un objeto.
La clave es la última alerta (a.fn()). Lo que devuelve a.fn() es obviamente un objeto, pero se convierte implícitamente en una cadena "hola" para su visualización.
Lo mismo sucede con los tipos numéricos, como
Copie el código de código de la siguiente manera:
Number.prototype.fn = function(){devolver esto};
var a = 10;
alerta(tipo de a.fn());//-->objeto
alerta(a.fn()); //-->10
a.fn() devuelve un tipo de objeto, pero se convierte implícitamente en un número cuando se utiliza alert(a.fn()).