Maison > interface Web > js tutoriel > le corps du texte

Explication détaillée des exemples d'utilisation de conversion de type valeur JavaScript et de type référence

伊谢尔伦
Libérer: 2017-07-18 16:26:40
original
1633 Les gens l'ont consulté

Les types de données JavaScript sont divisés en six types, à savoir nul, non défini, booléen, chaîne, nombre et objet. object est un type de référence et les cinq autres sont des types de base ou des types primitifs. Nous pouvons utiliser la méthode typeof pour imprimer à quel type appartient quelque chose. Pour comparer des variables de différents types, vous devez d'abord convertir le type, appelé conversion de type. La conversion de type est également appelée conversion implicite. Les conversions implicites se produisent généralement avec les opérateurs addition, soustraction, multiplication, division, égal et inférieur à, supérieur à, etc. .

1. Conversion de types de données entre types de valeurs :

Pour les types de données en JavaScript, veuillez vous référer à l'explication détaillée des types de données JavaScript. 1 chapitre.

(1). Les nombres et les chaînes utilisent l'opérateur + :

Si les nombres et les chaînes utilisent l'opérateur + pour fonctionner, les nombres seront d'abord convertis en chaîne, puis effectuez une opération de concaténation de chaînes :


var antzone = "antzone";
var num = 8;
console.log(antzone+num);
Copier après la connexion

(2 + opération d'opérateur impliquant des valeurs booléennes :

S'il y a). est un type booléen impliqué, la valeur booléenne sera d'abord convertie en nombre ou en chaîne correspondant, puis la connexion de chaîne ou l'opération arithmétique correspondante sera effectuée.


var bool = true;
var num = 8;
console.log(bool + num);
Copier après la connexion

Le code ci-dessus convertit d'abord vrai en nombre 1, puis effectue une addition arithmétique.


var bool = true;
var num = "8";
console.log(bool + num);
Copier après la connexion

La valeur booléenne ci-dessus sera convertie en la forme de chaîne correspondante "true", puis la concaténation de chaîne est effectuée.

(3). Opération de soustraction :

Si une opération de soustraction est effectuée, les deux opérandes seront d'abord convertis en nombres, puis des opérations arithmétiques sont effectuées :


var bool = true;
var num = "8";
console.log(bool - num);
Copier après la connexion

true sera converti en nombre 1, la chaîne "8" sera convertie en nombre 8, puis des opérations arithmétiques seront effectuées.

Il en va de même pour les conversions de multiplication, division, supérieur à, inférieur à et soustraction, je ne donnerai donc plus d'exemples.

(4).==Opération d'égalité :

undefined et null sont spéciaux. Ils utilisent tous les deux l'opérateur == pour renvoyer true.


console.log(undefined==null);
Copier après la connexion

Lors de la comparaison d'autres types de valeurs, les opérandes seront convertis en nombres


console.log("3"==3);
Copier après la connexion

Le Le code ci-dessus convertira la chaîne « 3 » en un nombre, puis la comparera.


console.log("1"==true);
Copier après la connexion

Le code ci-dessus convertira respectivement "1" et vrai en nombres, puis les comparera.

2. Convertir le type référence en type valeur :

La conversion du type référence (objet) en type valeur est beaucoup plus compliquée. présenté ci-dessous.

Les deux méthodes d'héritage d'objet peuvent nous aider à réaliser la fonction de conversion d'objet en type valeur :

méthode (1).toString().

Méthode (2).valueOf().

Normalement, nous pensons que pour convertir un objet en chaîne, vous devez appeler la méthode toString(), et pour convertir un objet en nombre, vous devez appeler la méthode valueOf(). ce n'est pas si simple lorsqu'elle est réellement appliquée. Voir l'exemple de code suivant :


var obj = {
 webName: "phpcn",
 url:"php.cn"
}
console.log(obj.toString());
Copier après la connexion

Comme vous pouvez le voir dans le code ci-dessus, la méthode toString() le fait. ne convertit pas l'objet en une chaîne qui reflète cet objet.


var arr = [1, 2, 3];
console.log(arr.valueOf());
Copier après la connexion

Comme vous pouvez le voir dans le code ci-dessus, la méthode valueOf() ne convertit pas l'objet en un nombre qui reflète cet objet.


var arr = [1, 2, 3];
console.log(arr.toString());
Copier après la connexion

La méthode toString() de l'objet tableau peut convertir le tableau en une chaîne qui reflète cet objet tableau.

se résume comme suit :

(1) Certains objets héritent simplement de la méthode toString() ou valueOf(), comme le. premier un exemple.
(2). Certains objets non seulement héritent de deux méthodes, mais les réécrivent également.

Ainsi, certaines méthodes objet peuvent atteindre l'objectif de conversion en chaînes ou en nombres, et d'autres non.

Les règles pour appeler toString() ou valueOf() pour convertir un objet en chaîne ou en nombre sont les suivantes :

Lors de l'appel à toString(), si l'objet a cette méthode, cela La méthode est appelée ; si cette méthode renvoie des données de type valeur, alors ces données de type valeur sont renvoyées, puis la conversion du type de données appropriée est effectuée en fonction du contexte. S'il n'y a pas de toString(), ou si la valeur de retour de cette méthode n'est pas une donnée de type valeur, alors valueOf() sera appelée (si cette méthode existe). Si valueOf() renvoie une donnée de type valeur, alors selon le). environnement contextuel pour effectuer des conversions de types de données pertinentes.

Explication supplémentaire :

(1). Ce qui précède présente les fonctions des méthodes valueOf() et toString() par défaut (conversion d'objets en nombres ou en chaînes), mais vous devez y faire attention. Le fait est que ce n'est pas une règle absolue, c'est-à-dire que la méthode valueOf() ne doit pas renvoyer de nombre ou que la méthode toString() doit être convertie en chaîne. Par exemple, ces deux méthodes simplement héritées ne peuvent pas. être converti en nombres et La fonction des chaînes, pour un autre exemple, nous pouvons utiliser ces deux méthodes nous-mêmes, et la valeur de retour n'a pas besoin d'être un nombre ou une chaîne.

(2).还有需要特别注意的一点就是,很多朋友认为,转换为字符串首先要调用toString()方法, 其实这是错误的认识,我们应该这么理解,调用toString()方法可以转换为字符串,但不一定转换字符串就是首先调用toString()方法。

看如下代码实例:


var arr = [];
arr.valueOf = function () { return "1"; }
arr.toString = function () { return "2"; }
console.log(arr + "1");
Copier après la connexion

上面的代码中,arr是要被转换为字符串的,但是很明显是调用的valueOf()方法,而没有调用toString()方法。有些朋友可能会有这样的质疑,难道[2]这样的数字转换成字符串"2",不是调用的toString()方法吗。

代码如下:


var arr = [2];
console.log(arr + "1");
Copier après la connexion

其实过程是这样的,首先arr会首先调用valueOf()方法,但是数字的此方法是简单继承而来,并没有重写(当然这个重写不是我们实现),返回值是数组对象本身,并不是一个值类型,所以就转而调用toString()方法,于是就实现了转换为字符串的目的。

总结如下:

大多数对象隐式转换为值类型都是首先尝试调用valueOf()方法。但是Date对象是个例外,此对象的valueOf()和toString()方法都经过精心重写,默认是调用toString()方法,比如使用+运算符,如果在其他算数运算环境中,则会转而调用valueOf()方法。

代码实例如下:


var date = new Date();
console.log(date + "1");
console.log(date + 1);
console.log(date - 1);
console.log(date * 1);
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!