Maison >interface Web >js tutoriel >Une brève discussion sur la conversion de type implicite en JavaScript
Le
type de données de JavaScript est divisé en six types, à savoir null, indéfini, booléen, chaîne, nombre, objet. L'objet est un type de référence , et les cinq autres types de 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, ce qui est 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. .
typeof '11' //string typeof(11) //number '11' < 4 //false
Parlons d'abord de l'addition, de la soustraction, de la multiplication et de la division :
1.ChaînesAjoutez des nombres, le nombre sera converti en chaîne.
2. Soustrayez les chaînes des nombres et convertissez les chaînes en nombres. Si la chaîne n'est pas un nombre pur, elle sera convertie en NaN. Il en va de même pour les chaînes moins les nombres. La soustraction de deux chaînes les convertit également d'abord en nombres.
3. Il en va de même pour les conversions de multiplication, division, supérieur à, inférieur à et soustraction.
//隐式转换 + - * == / // + 10 + '20' //2010 // - 10 - '20' //-10 10 - 'one' //NaN 10 - '100a' //NaN // * 10*'20' //200 '10'*'20' //200 // / 20/'10' //2 '20'/'10' //2 '20'/'one' //NaN
Jetons un coup d'œil à un autre ensemble de ==.
1. non défini est égal à null
2. Lorsque vous comparez des chaînes et des nombres, convertissez les chaînes en nombres
3 Lorsque vous comparez des nombres en booléens, convertissez des booléens en nombres<.>
4. Lorsque vous comparez des chaînes et des booléens, convertissez les deux en nombres// == undefined == null; //true '0' == 0; //true,字符串转数字 0 == false; //true,布尔转数字 '0' == false; //true,两者转数字 null == false; //false undefined == false; //false
tableau vide, tant qu'il s'agit d'un objet, est un type référence, donc [] est vrai. Pour convertir un type de référence en nombre ou en chaîne, utilisez valueOf() ou toString(); l'objet lui-même hérite de valuOf() et toString(), et vous pouvez également personnaliser valueOf() et toString( ). En fonction de l'objet, utilisez le valueOf() hérité pour le convertir en chaîne, en nombre ou lui-même, et l'objet doit être converti en chaîne à l'aide de toString. Les objets généraux appellent valueOf() par défaut.
1. Lors de la conversion d'un objet en nombre, appelez valueOf();2 Lors de la conversion d'un objet en chaîne, appelez toString();Premier aperçu. dans l'exemple suivant :0 == []; // true, 0 == [].valueOf(); -> 0 == 0; '0' == []; // false, '0' == [].toString(); -> '0' == ''; 2 == ['2']; // true, 2 == ['2'].valueOf(); -> 2 == '2' -> 2 == 2; '2' == [2]; // true, '2' == [2].toString(); -> '2' =='2'; [] == ![]; //true, [].valueOf() == !Boolean([]) -> 0 == false -> 0 == 0;Lorsque l'objet est converti en nombre, valueOf() est appelé avant cela, toString() est appelé donc je suppose que la méthode valueOf est comme ceci. Ainsi, l'exemple ci-dessus 0 == [] devrait être remplacé par le suivant, ce qui est plus raisonnable. Dans tous les cas, [] est finalement converti en 0.
var valueOf = function (){ var str = this.toString(); //先调用toString(),转成字符串 //... } 0 == []; // true, 0 == [].valueOf(); -> 0 == '0' -> 0 == 0;ValueOf() et toString() personnalisés ;1. ValueOf() et toString() personnalisés existent tous les deux, et valueOf() sera appelé par défaut ;
2. S'il n'y a que toString(), appelez toString();
var a = [1]; a.valueOf = function (){ return 1;} a.toString = function (){ return '1';} a + 1; // 2, valueOf()先调用La suppression de valueOf() appellera toString().
var a = [1]; a.valueOf = function (){ return 1;} a.toString = function (){ return '1';} a + 1; // 2, 先调用valueOf() //去掉valueOf delete a.valueOf; a + 1; // '11', 调用toString()Que se passe-t-il si vous retournez autre chose ?
var a = [1]; a.valueOf = function (){return ;} a.toString = function (){return 1 ;}; 1 - a; //NaND'autres objets appellent valueOf() pour convertir en différents types :
var a = {}; a.valueOf(); //Object {} var a = []; a.valueOf(); //[] 自己本身 var a = new Date(); a.valueOf(); //1423812036234 数字 var a = new RegExp(); a.valueOf(); // /(?:)/ 正则对象La comparaison entre les types de référence est la comparaison des adresses mémoire, et aucune conversion implicite n'est requise ici. Pas grand chose à dire.
[] == [] //false 地址不一样 var a = []; b = a; b == a //true
Number([]); //0 String([]); //'' Boolean([]); //trueIl existe une méthode de conversion plus simple.
3 + '' // 字符串'3' +'3' // 数字3 !!'3' // true
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!