opération magique "+" js

Comme nous le savons tous, js est un langage faible. Contrairement à Java, vous devez déclarer le type de la variable lorsque vous définissez une variable. Habituellement, lorsque nous utilisons l'opération «+», nous ajoutons simplement des nombres ou les épelons dans des chaînes, mais il y a aussi quelques surprises, telles que:
1. Commençons par une simple:

 true+true

L'imprimé est 2, la raison en est que js convertira vrai en nombre 1 et faux en 0 lors de son exécution;

2. Un autre pervers:

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

Si vous connaissez le principe des chaussures pour enfants me dira que la réponse est: 3,45,6, pourquoi est-ce?
La raison est simple: tout d'abord, parlons des types de données de js. Les types de base sont undefined, null, number, string, boolean et les types de données complexes Array et Object. Lorsque nous effectuons l'opération "+":
A: s'il s'agit d'une addition de nombre, l'opération d'addition normale sera effectuée;
B: si l'un des ajouts n'est pas un chiffre, il sera converti en type chaîne pour l'épissage de chaîne ;
C: S'il s'agit d'un type complexe, Array utilisera la méthode string () pour convertir le tableau en la chaîne correspondante. S'il s'agit d'un tableau vide, ce sera ". S'il s'agit d'un tableau non vide, par exemple , [5,6] sera converti en '5., 6'; s'il s'agit d'un objet, il retournera '[object Object]' après avoir appelé la méthode string;
donc [3,4] + [5,6] = '3,4' + '5,6' = 3,45, 6
3. Anormal amélioré:

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

Selon la méthode de calcul ci-dessus, nous pouvons rapidement conclure qu'il s'agit de [objet Object] 5,6
{a: 4} + [5,6] = '[object Object]' + '5,6' = [object Object] 5, 6
4 Regardons un groupe d'ajouts dégoûtants:

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

Si vous l'imprimez, vous constaterez que le premier est '[objet objet]', ce qui est conforme à notre logique de calcul, mais le second devient '0' (certains navigateurs sont normalement '[objet objet]') Quant à Quelle est la raison de 0? Lorsque le premier {} est à nouveau exécuté, le navigateur le traitera comme une instruction (déclaration), l'exécution réelle est + [], quand + [], il passera Number ([]) à 0
5. Que faire si deux sont vides les objets sont ajoutés ensemble?

{}+{}=?

Le résultat de l'exécution de certains navigateurs est «[object Object] [object Object]», et certains résultats de l'exécution sont NaN. S'il s'agit de NaN, le processus d'exécution est similaire au point 5, qui équivaut à exécuter + Number ({}) , Donc le résultat est NaN.

Résumé:
1. nombre + nombre = opération d'addition telle que 2 + 3 = 5
2. numéro + chaîne ou chaîne + chaîne = épissage de chaîne; 1 + 'a' = '1a'
3. tableau + objet = chaîne (tableau) + string (Object)
4. {} + any = Number (any)

Je suppose que tu aimes

Origine blog.csdn.net/weixin_43169949/article/details/95016829
conseillé
Classement