Maison  >  Article  >  interface Web  >  Conversion de type d'opérateur en JavaScript (tutoriel graphique)

Conversion de type d'opérateur en JavaScript (tutoriel graphique)

亚连
亚连original
2018-05-21 11:22:35957parcourir

Récemment, j'ai découvert que la question de la conversion de type d'opérateur apparaît souvent dans les questions d'entretien frontales, voici donc un résumé des exemples de conversion de type d'opérateur en JavaScript. Les amis qui en ont besoin peuvent s'y référer

. Tout d’abord, posons d’abord quelques questions ! Par souci d'unification, je n'écrirai pas ces questions ensemble. Dans les questions d'entretien, ces questions sont souvent mélangées, ce qui vous confondra encore plus. Afin de faciliter la démonstration, j'ai écrit quelques questions ici en modules. Vous pouvez jeter un oeil !

Conversion implicite de la chaîne d'opérateur
Multiplication

 console.dir("-------以下乘法---------");
 console.dir(5*"5");
 console.dir(5*"a");
 console.dir(5*NaN);
 console.dir(5*null);
 console.dir(5*undefined);
 console.dir(5*5);
 console.dir("-------以上乘法---------");

Division

 console.dir("-------以下除法---------");
 console.dir(5/"5");
 console.dir(5/"a");
 console.dir(5/NaN);
 console.dir(5/null);
 console.dir(null/5);
 console.dir(5/undefined);
 console.dir(5/5);
 console.dir(5/0);
 console.dir(0/5);
 console.dir(0/0);
 console.dir("-------以上除法---------");

Reste , module

 console.dir("-------以下取余、求模--------");
 console.dir(16%"5");
 console.dir(5%"a");
 console.dir(5%NaN);
 console.dir(5%null);
 console.dir(null%5);
 console.dir(5%undefined);
 console.dir(5%5);
 console.dir(5%0);
 console.dir(0%5);
 console.dir(0%0);
 console.dir("-------以上取余、求模---------");

Addition

 console.dir("-------以下加法--------");
 console.dir(16+"5");
 console.dir(5+"a");
 console.dir(5+NaN);
 console.dir(5+null);
 console.dir(5+undefined);
 console.dir(5+5);
 console.dir("两个数的和是"+5+5);
 console.dir("两个数的和是"+(5+5));
 console.dir("-------以上加法--------");

Soustraction

 console.dir("-------以下减法--------");
 console.dir(16-"5");
 console.dir(5-"a");
 console.dir(5-NaN);
 console.dir(5-null);
 console.dir(5-undefined);
 console.dir(5-5);
 console.dir(5-true);
 console.dir(5-"true");
 console.dir(5-"");
 console.dir("两个数的差是"+5-5);
 console.dir("两个数的差是"+(5-5));
 console.dir("-------以上减法--------");

Relationnel opérateurs

 console.dir("-------以下关系操作符--------");
 console.dir(16>"5");
 console.dir("16">"5");
 console.dir(5<"a");
 console.dir(5>=NaN);
 console.dir(5<NaN);
 console.dir(NaN>=NaN);
 console.dir(5>=null);
 console.dir(5>=undefined);
 console.dir(5>=5);
 console.dir(5>=true);
 console.dir(5>="true");
 console.dir(5>="");
 console.dir("Brick">"alphabet");
 console.dir("brick">"alphabet");
 console.dir("-------以上关系操作符--------");

Multiplication

 console.dir(5*"5"); //25
 console.dir(5*"a");//NaN
 console.dir(5*NaN);//NaN
 console.dir(5*null);0
 console.dir(5*undefined);//NaN
 console.dir(5*5);//25

Voici le principe de conversion implicite de la multiplication :

1. Si les deux les valeurs sont toutes deux des nombres, puis effectuez la multiplication directement (je pense que tout le monde peut le faire, tout comme les mathématiques à l'école primaire, et faites attention au signe du nombre) Si la valeur du produit dépasse la plage de représentation numérique d'ECMAscript, renvoie Infini (Infini positif) ou -Infini (infini négatif)
2 Si un nombre est NaN, le résultat est NaN
3 Si Infinity est multiplié par 0, le résultat est NaN
4. un opérateur est un nombre et l'autre n'est pas une valeur numérique, puis utilisez la fonction Number() pour le convertir d'abord et multipliez la valeur convertie par le nombre. Si le résultat converti apparaît NaN, alors le résultat est NaN.
Division

 console.dir(5/"5");//1  将字符转化为数字进行相除
 console.dir(5/"a");//NaN  将“a”用Number()函数进行转化,出来的值是NaN,结果就是NaN
 console.dir(5/NaN);//NaN
 console.dir(5/null);//Infinity null用Number()函数进行转化,结果是0,那么5/0是正无穷
 console.dir(null/5);//0 同上0/5是0
 console.dir(5/undefined);//NaN  undefined 用Number()进行转化,结果是NaN
 console.dir(5/5);//1
 console.dir(5/0);//Infinity
 console.dir(0/5);//0
 console.dir(0/0);//NaN //0除以0结果是NaN

Parlons du principe de conversion implicite de la division :

Semblable à la multiplication, la seule chose en plus est que le résultat de 0/ 0 est NaN
Reste et module

Le reste est le plus couramment utilisé dans les projets pour trouver des nombres pairs et impairs. Nous utilisons souvent une valeur et 2 pour trouver le reste. Si le résultat est 0, alors le nombre est pair, et si le résultat est 1, alors le nombre est impair.

Regardez la question ci-dessus :

 console.dir(16%"5"); //1 将字符串5通过Number()转化为5然后进行求余
 console.dir(5%"a");//NaN
 console.dir(5%NaN);//NaN
 console.dir(5%null);//NaN 将null 通过Number()转化,结果是0,然后计算5%0 ,结果是NaN
 console.dir(null%5);//0 同上0%5 取余,结果是0
 console.dir(5%undefined);//NaN
 console.dir(5%5);//0
 console.dir(5%0);//NaN
 console.dir(0%5);//0
 console.dir(0%0);//NaN
console.dir(Infinity%Infinity);//NaN
console.dir(5%Infinity);//5
 console.dir(Infinity%5); //NaN

Parlons du principe de conversion implicite des restes :

Identique à la multiplication, laissez-moi parler de la partie spéciale ! Nous connaissons tous les notions de dividende et de diviseur, nous les avons appris à l'école primaire.

1. Le dividende est infini, et le diviseur est une valeur finie, alors le résultat est NaN
2 Le dividende est une valeur finie, et le diviseur est 0, alors le résultat est NaN<.>3. Infinity% Le résultat de Infinity est NaN
4 Le dividende est une valeur finie, le diviseur est une valeur infinie et le résultat est le dividende.
5. Le dividende est 0, et le résultat est 0

Soustraction

Regardez l'exemple ci-dessus !

 console.dir(16-"5");//11
 console.dir(5-"a");//NaN
 console.dir(5-NaN);//NaN
 console.dir(5-null);//5
 console.dir(5-undefined);//NaN
 console.dir(5-5);//0
 console.dir(5-true);//4
 console.dir(5-"true");//NaN
 console.dir(5-"");//5
 console.dir(5-Infinity);//-Infinity
 console.dir(Infinity-Infinity);//NaN
 console.dir("两个数的差是"+5-5);//NaN
 console.dir("两个数的差是"+(5-5));//两个数的差是0
Parlons du principe de conversion implicite de la soustraction :

Idem que ci-dessus, je ne parlerai pas des mêmes, je parlerai de ceux propres à la soustraction.

1. Le résultat de Infinity-Infinity est NaN

2 Le résultat de -Infinity-Infinity est -Infinity
3 Le résultat de la soustraction d'Infinity d'un nombre est -Infinity
. 4. Infinity-(-Infinity )Le résultat est Infinity
5 Si l'opérande est un objet, appelez la méthode object valueOf. Si le résultat est NaN, alors le résultat est NaN. S'il n'y a pas de méthode valueOf, alors la méthode toString() est appelée et la chaîne résultante est convertie en valeur numérique.

Opérateurs relationnels

Les opérateurs relationnels renvoient uniformément vrai ou faux

 console.dir(16>"5"); //true
 console.dir("16">"5");//false
 console.dir(5<"a");//false
 console.dir(5>=NaN);//false
 console.dir(5<NaN);//false
 console.dir(NaN>=NaN);//false
 console.dir(5>=null);//true
 console.dir(5>=undefined);//false
 console.dir(5>=5);//true
 console.dir(5>=true);//true
 console.dir(5>="true");//false
 console.dir(5>="");//true 
 console.dir("Brick">"alphabet");//false B的字符串编码值是66 ,而a的字符串编码是97.因此false
 console.dir("brick">"alphabet");//true 小写字母b比a大,所以是true
Ce qui suit est le principe de conversion implicite des opérateurs relationnels :

C'est toujours la même chose que ci-dessus, je ne citerai pas les mêmes.

Si les deux nombres comparés sont tous deux des chaînes, alors les valeurs de codage de chaîne correspondant aux chaînes seront comparées.

Opération d'addition

Ajouter une conversion implicite d'opération. La raison pour laquelle je le dis en dernier est parce que l'opération d'addition de conversion implicite est différente de la précédente. , tant que l'un est un nombre, l'autre utilise également Number() par défaut pour la conversion des nombres. L’opération d’addition est différente. Tant que l'une des opérations d'addition est une chaîne, l'autre sera convertie en chaîne, et ensuite les chaînes seront concaténées !

 console.dir(16+"5"); //156
 console.dir(5+"a");//5a
 console.dir(5+NaN);//NaN
 console.dir(5+null);//5
 console.dir(&#39;5&#39;+null);//5null
 console.dir(5+undefined);//NaN
 console.dir(null+undefined);//NaN
 console.dir(5+5);//10
 console.dir("两个数的和是"+5+5);//两个数的和是55
 console.dir("两个数的和是"+(5+5));//两个数的和是10
Parlons du principe de conversion implicite des opérateurs d'addition :

1 Si l'une est une chaîne, l'autre sera également convertie en chaîne pour l'épissage. Si l'une est une chaîne et l'autre est nulle ou non définie, alors si elle est ajoutée, null ou non définie appellera la méthode String() pour obtenir la chaîne « nulle » ou « non définie », puis la fusionnera.

2. Si null ou non défini est ajouté à un nombre, alors le nul ou non défini doit être converti en Number() puis ajouté.
3. Les principes restants sont similaires aux autres, je n’entrerai donc pas dans les détails.

Conversion implicite du double signe égalExécutez le code suivant une fois, je pense que vous le comprendrez naturellement~

var a;

console.dir(0 == false);//true

console.dir(1 == true);//true

console.dir(2 == {valueOf: function(){return 2}});//true

console.dir(a == NaN);//false
console.dir(NaN == NaN);//false

console.dir(8 == undefined);//false

console.dir(1 == undefined);//false

console.dir(2 == {toString: function(){return 2}});//true

console.dir(undefined == null);//true

console.dir(null == 1);//false

console.dir({ toString:function(){ return 1 } , valueOf:function(){ return [] }} == 1);//true

console.dir(1=="1");//true

console.dir(1==="1");//false
Ce qui précède est ce que j'ai compilé pour tout le monde, je j'espère qu'à l'avenir, cela sera utile à tout le monde.

Articles connexes :

Modèles de conception d'architecture d'application JavaScript à grande échelle (avancés)

Interprétation détaillée en javascriptCompréhension des littéraux d'objet Javascript (tutoriel graphique)

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!

Déclaration:
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