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
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
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
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
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('5'+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
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
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!