Maison >interface Web >js tutoriel >Résoudre le problème de savoir pourquoi [1,2] + [3,4] n'est pas égal à [1,2,3,4] en JavaScript
Je souhaite ajouter un tableau à un autre tableau, j'ai donc écrit le code suivant dans Firebug :
[1,2] + [3,4]
Mais, de façon inattendue , le résultat :
"1,23,4"
mais pas ce à quoi je m'attendais :
[1,2,3,4]
L'opérateur + de JavaScript a deux objectifs :
Ajouter deux nombres
Concaténer les deux chaînes ;
La spécification ne définit pas le comportement de l'opérateur + sur les tableaux, donc JavaScript convertit d'abord le tableau en chaîne, puis effectue l'opération + sur la chaîne.
Si vous souhaitez concaténer deux tableaux, vous pouvez utiliser la méthode concat du tableau :
[1, 2].concat([3, 4]) // [1, 2, 3, 4]
JavaScript a 6 types de données intégrés : (Annotation : à partir du lien donné, l'auteur original doit désigner les types de données du système de types d'origine. JavaScript a en fait deux systèmes de types. Le premier système de types est utilisé <code><strong><span style="color: #ff0000;">typeof</span></strong>
typeofinstanceof
est appelé le système de types primitif, et le deuxième système de types est basé sur celui-ci, il est développé à partir du type d'objet, c'est-à-dire le système de types d'objets. Le système de types d'objets est identifié par
On notera que, null
<strong><span style="color: #ff0000;">[]</span></strong>
et [] sont deux types complètement différents lors de l'utilisation de <code><strong><span style="color: #ff0000;">typeof</span></strong> object
typeof.
+
数组不是基本类型
. Mais lors de l'utilisation de l'opérateur , la façon dont cela fonctionne dans ces deux cas est différente. En JavaScript, Array
, son existence n'est qu'une syntaxe enrobée de sucre, c'est en fait function
Instance de classe. (ps : Function
est en fait la syntaxe enrobée de sucre de l'instance de classe javascript
new Number(5)
.) Si vous dites Maintenant que votre esprit est encore clair, il est temps d'ajouter un peu d'enthousiasme. Types de wrapper d'objets pour tels que new Boolean(true)
<strong><span style="color: #ff0000;">new String("abc")</span></strong>
object
, Number
Boolean
et <span style="color: #ff0000;"><code>Number
new String("abc") sont également de type , ce ne sont pas des nombres, des booléens ou des chaînes. Cependant, les opérateurs arithmétiques et Boolean
représentent des nombres. Vous vous souvenez de l'opérateur + dont j'ai parlé plus tôt ? Ses objets d'opération sont des nombres et des chaînes, c'est-à-dire String
, number
, boolean
ou string
,
---------------------------------------------------------------------------------------- | undefined | boolean | number | string | function | object | null | array ---------------------------------------------------------------------------------------- undefined | number | number | number | string | string | string | number | string boolean | number | number | number | string | string | string | number | string number | number | number | number | string | string | string | number | string string | string | string | string | string | string | string | string | string function | string | string | string | string | string | string | string | string object | string | string | string | string | string | string | string | string null | number | number | number | string | string | string | number | string array | string | string | string | string | string | string | string | string -------------------------------------------------------------------------------------------
,
.
Le tableau suivant est le type de résultat obtenu après que l'opérateur + ait opéré sur différents typesvar o = { valueOf : function () { return 4; } };Ce tableau est applicable à Chrome 13, Firefox 6, Opera 11 et IE9. Devoir : Vérifiez la compatibilité des autres navigateurs. Remarque : l'opération + sur les objets définis par l'utilisateur ne produit pas toujours un résultat de chaîne. Cela dépend principalement de la façon dont la conversion du type d’objet en type natif est implémentée. Par exemple : Le calcul de o + 2 obtiendra 6, qui est un nombre ; le calcul de o + '2' obtiendra '42', qui est une chaîne de caractères.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!