operação js magic "+"

Como todos sabemos, js é uma linguagem fraca. Ao contrário de Java, você deve declarar o tipo da variável ao definir uma variável. Normalmente, quando usamos a operação '+', apenas adicionamos números ou os soletramos em strings, mas também há algumas surpresas, como:
1. Vamos começar com uma simples:

 true+true

O número impresso é 2, o motivo é que js converterá verdadeiro para o número 1 e falso para 0 quando for executado;

2. Outro pervertido:

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

Se você conhece o princípio do calçado infantil vai me dizer a resposta é: 3,45,6, por que isso?
O motivo é simples: em primeiro lugar, vamos falar sobre os tipos de dados de js. Os tipos básicos são indefinido, nulo, número, string, booleano e os tipos de dados complexos Array e Object. Quando executamos a operação "+":
A: Se for uma adição de número, a operação de adição normal será realizada;
B: Se um dos adendos não for um dígito, ele será convertido para o tipo de string para emenda de string ;
C: Se for um tipo complexo, Array usará o método string () para converter a matriz na string correspondente. Se for um Array vazio, será ". Se for uma matriz não vazia, por exemplo , [5,6] será convertido em '5, 6'; se for um objeto, retornará '[objeto Objeto]' após chamar o método de string;
portanto, [3,4] + [5,6] = '3,4' + '5,6' = 3,45, 6
3. Anormal atualizado:

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

De acordo com o método de cálculo acima, podemos rapidamente concluir que é [objeto Objeto] 5,6
{a: 4} + [5,6] = '[objeto Objeto]' + '5,6' = [objeto Objeto] 5, 6
4 Vejamos um grupo de adições nojentas:

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

Se você imprimi-lo, verá que o primeiro é '[objeto objeto]', o que está de acordo com nossa lógica de cálculo, mas o segundo se torna '0' (alguns navegadores são normalmente '[objeto objeto]') Quanto a Qual é a razão de 0? Quando o primeiro {} for executado novamente, o navegador irá tratá-lo como uma declaração (declaração), a execução real é + [], quando + [], ele passará Número ([]) para 0
5. E se dois vazios objetos são adicionados juntos?

{}+{}=?

O resultado da execução de alguns navegadores é '[objeto objeto] [objeto objeto]', e alguns resultados de execução são NaN. Se for NaN, o processo de execução é semelhante ao ponto 5, que é equivalente a executar + Número ({}) , Portanto, o resultado é NaN.

Resumo:
1. número + número = operação de adição, como 2 + 3 = 5
2.number + String ou string + string = string splicing; 1 + 'a' = '1a'
3.Array + Object = string (Array) + string (objeto)
4. {} + qualquer = Número (qualquer)

Acho que você gosta

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