operación js magic "+"

Como todos sabemos, js es un lenguaje débil. A diferencia de Java, debe declarar el tipo de variable cuando define una variable. Por lo general, cuando usamos la operación '+', simplemente agregamos números o los deletreamos en cadenas, pero También hay algunas sorpresas, como:
1. Comencemos con una simple:

 true+true

Impreso es 2, la razón es que js convertirá verdadero al número 1 y falso a 0 cuando se ejecute;

2. Otro pervertido:

[3,4]+[5,6]=?

Si conoces el principio de los zapatos para niños me dirás que la respuesta es: 3,45,6, ¿por qué?
La razón es simple: en primer lugar, hablemos de los tipos de datos de js. Los tipos básicos son undefined, null, number, string, boolean y los tipos de datos complejos Array y Object. Cuando realizamos la operación "+":
A: Si es una suma de números, se realizará la operación de suma normal;
B: Si uno de los sumandos no es un dígito, entonces se convertirá al tipo de cadena para empalmar cadenas ;
C: Si es un tipo complejo, Array usará el método string () para convertir el arreglo en la cadena correspondiente. Si es un Array vacío, será ". Si es un arreglo no vacío, por ejemplo , [5,6] se convertirá a '5., 6'; si es un objeto, devolverá '[object Object]' después de llamar al método de cadena;
entonces [3,4] + [5,6] = '3,4' + '5,6' = 3,45, 6
3. Anormal actualizado:

{a:4}+[5,6]=?

De acuerdo con el método de cálculo anterior, podemos concluir rápidamente que es [objeto Objeto] 5,6
{a: 4} + [5,6] = '[objeto Objeto]' + '5,6' = [objeto Objeto] 5, 6
4 Veamos un grupo de adiciones desagradables:

[]+{}=?
{}+[]=?

Si lo imprime, encontrará que el primero es '[object Object]', que está en línea con nuestra lógica de cálculo, pero el segundo se convierte en '0' (algunos navegadores son normalmente '[object Object]') En cuanto a ¿Cuál es la razón de 0? Cuando se vuelve a ejecutar el primer {}, el navegador lo tratará como una instrucción (declaración), la ejecución real es + [], cuando + [], pasará el Número ([]) a 0
5. ¿Qué pasa si dos están vacíos? los objetos se suman?

{}+{}=?

El resultado de ejecución de algunos navegadores es '[object Object] [object Object]', y algunos resultados de ejecución son NaN. Si es NaN, el proceso de ejecución es similar al punto 5, que equivale a ejecutar + Número ({}) , Entonces el resultado es NaN.

Resumen:
1. número + número = operación de suma como 2 + 3 = 5
2.número + Cadena o cadena + cadena = empalme de cadenas; 1 + 'a' = '1a'
3. Arreglo + Objeto = cadena (Matriz) + cadena (Objeto)
4. {} + cualquiera = Número (cualquiera)

Supongo que te gusta

Origin blog.csdn.net/weixin_43169949/article/details/95016829
Recomendado
Clasificación