Primeiro, vamos fazer algumas perguntas primeiro! Para unificar, não misturo essas perguntas. Nas perguntas da entrevista, muitas vezes misturo essas perguntas, o que o deixará mais confuso. Para torná -lo mais conveniente para demonstração, escrevi algumas perguntas em módulos aqui, para que você possa lê -lo!
Conversão implícita de cordas do operador
multiplicação
console.dir ("------------------------"); console.dir (5*"5"); console.dir (5*"A"); console.dir (5*nan); console.dir (5*nulo); console.dir (5*indefinido); console.dir (5*5); console.dir("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------divisão
console.dir ("--------------------"); console.dir (5/"5"); console.dir (5/"A"); console.dir (5/nan); console.dir (5/nulo); console.dir (null/5); console.dir (5/indefinido); console.dir (5/5); console.dir (5/0); console.dir (0/5); console.dir (0/0); console.dir ("----------------------"); console.dir ("---------------------------");Pegue o restante e encontre o modelo
console.dir ("-------------------------"); console.dir (16%"5"); console.dir (5%"A"); console.dir (5%NAN); console.dir (5%nulo); console.dir (nulo%5); console.dir (5%indefinido); console.dir (5%5); console.dir (5%0); console.dir (0%5); console.dir (0%0); console.dir("----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------adição
console.dir ("---------------------"); console.dir (16+ "5"); console.dir (5+ "A"); console.dir (5+nan); console.dir (5+nulo); console.dir (5+indefinido); console.dir (5+5); console.dir ("A soma de dois números é"+5+5); console.dir ("A soma de dois números é"+(5+5)); console.dir("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Subtração
console.dir ("--------------------"); console.dir (16- "5"); console.dir (5- "A"); console.dir (5-NAN); console.dir (5-null); console.dir (5-entendido); console.dir (5-5); console.dir (5-verdade); console.dir (5- "true); console.dir (5-" ""); console.dir ("A diferença entre dois números é"+5-5); console.dir ("a diferença entre dois números é"+(5-5)); console.dir ("---------------"); console.dir ("------------- ,----- "- ,----- "-- ,-- ,---,"; console.dir ("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Operadores relacionais
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> = nulo); console.dir (5> = indefinido); console.dir (5> = 5); console.dir (5> = true); console.dir (5> = "true"); console.dir (5> = ""); console.dir ("tijolo"> "alfabeto"); console.dir ("tijolo"> "alfabeto"); console.dir ("-------------------");multiplicação
console.dir (5*"5"); // 25 console.dir (5*"a"); // nan console.dir (5*nan); // nan console.dir (5*null); 0 console.dir (5*indefinido); // nan console.dir (5*5); // 25
Vamos falar sobre o princípio da conversão implícita da multiplicação:
1. Se os dois valores forem todos os números, execute as operações de multiplicação diretamente. (Acredito que todos possam fazer isso, assim como a matemática da escola primária, e você deve prestar atenção aos símbolos dos números). Se o valor do produto exceder a faixa de representação numérica do ECMAScript, retorne a infinidade (infinito positivo) ou -infinity (infinito negativo)
2. Se um número for nan, então o resultado é NAN
3. Se o infinito é multiplicado com 0, o resultado é NAN
4. Se um operador for um número e o outro não for um valor numérico, primeiro use a função número () para convertê -lo e multiplique o valor convertido com o número. Se o resultado convertido aparecer na NAN, o resultado será NAN.
divisão
console.dir (5/"5"); // 1 Converta caracteres em números e divida console.dir (5/"a"); // nan console.dir (5/nan); // nan console.dir (5/null); // infinito nulo converte com número () de número () e o resultado. 0/5 é 0 console.dir (5/indefinido); // nan indefinido converte com número (), e o resultado é NAN console.dir (5/5); // 1 console.dir (5/0); // infinito console.dir (0/5); // 0 Console.dir (0/0);
Vamos falar sobre o princípio implícito de conversão da divisão:
Semelhante à multiplicação, o único mais é que o resultado 0/0 é NAN
Pegue o restante e encontre o modelo
A coisa mais comum a usar no projeto é encontrar números estranhos e uniformes. Frequentemente usamos um número com 2 para calcular o saldo. Se o resultado for 0, o número será um número par e, se o resultado for 1, o número será um número ímpar.
Confira o tópico acima:
console.dir (16%"5"); // 1 Converta a string 5 a 5 por número () e calcule o console restante.dir (5%"A"); // nan console.dir (5%NAN); // nan console.dir (5%nulo); // nan converte nulo através do número (), o resultado é 0 e, em seguida, calcula 5%0, o resultado é o console nan.dir (nulo%5); // 0 o mesmo que acima de 0%5, o resultado é 0 console.dir (5%indefinido); // nan console.dir (5%5); // 0 console.dir (5%0); // nan console.dir (0%5); // 0 console.dir (0%0); // nanconsole.dir (infinito%infinito); // nanconsole.dir (5%infinito); // 5 console.dir (infinito%5); // nan
Vamos falar sobre o princípio da conversão implícita de resíduos:
Como multiplicação, deixe -me falar sobre algo especial! Todos conhecemos os conceitos de dividendos e divisores, que aprendemos no ensino fundamental.
1. O dividendo é infinito e o dividendo é um valor finito, então o resultado é nan
2. O divisor é um valor finito e o divisor é 0, então o resultado é nan
3. Infinity%Infinity Result Is Nan
4. O dividendo é um valor finito, o dividendo é um valor infinito e o resultado é um divisor.
5. O número dividido é 0, o resultado é 0
Subtração
Dê uma olhada no exemplo acima!
console.dir (16- "5"); // 11 console.dir (5- "a"); // nan console.dir (5-nan); // nan console.dir (5-null); // 5 console.dir (5-tefined); // nan console.dir (5-5); console.dir (5- "true"); // nan console.dir (5-""); // 5 console.dir (5-Infinity); //-Infinity Console.dir (infinito-infinito); // console.dir ("a diferença entre os dois números é"+5-5); // nan console.dir ("o console (" a diferença entre os dois números "+5-5); // nan.dir.dir (" a diferença "+5-5); Os números são 0Vamos falar sobre o princípio da conversão implícita da subtração:
Assim como acima, não vou falar sobre a mesma coisa, vou falar sobre a subtração única.
1. O resultado da infinidade infinita é NAN
2. -O resultado da infinidade de infinidade é -infinity
3. O resultado de um número menos infinito é - infinito
4. Infinito-(-Infinito) O resultado é o infinito
5. Se o operando for um objeto, o valor do objeto do método será chamado. Se o resultado for nan, o resultado é NAN. Se não houver um método de valor, ligue para o método ToString () e converta a sequência resultante em um valor numérico.
Operadores relacionais
Os operadores relacionais retornam uniformemente
console.dir (16> "5"); // verdadeiro console.dir ("16"> "5"); // false console.dir (5 <"a"); // false console.dir (5> = nan); // False Console.dir (5 <nan); // console false.dir (nan> = nan); console). console.dir (5> = indefinido); // False Console.dir (5> = 5); // True Console.dir (5> = true); // True Console.dir (5> = indefinido); // False Console.dir (5> = 5); // Console.dir (5> True); console.dir (5> = ""); // console true.dir ("tijolo"> "alfabeto"); // false, o valor que codifica a string de b é 66, enquanto a codificação de string de a é 97. Portanto, o False Console.dir ("Brick"> "alfabet");Vamos falar sobre o princípio implícito de conversão dos operadores relacionais:
Ainda é o mesmo que acima, não vou dizer a mesma coisa.
Se os dois números comparados forem strings, os valores codificados por sequência correspondentes à sequência serão comparados.
Operação de adição
A razão pela qual finalmente disse que a conversão implícita de operações de adição é que a conversão implícita de operações de adição é diferente das anteriores. Todos os símbolos do operador anteriores, desde que um seja um número, o outro também usa o número () para converter números por padrão. A operação de adição é diferente. Enquanto uma das operações de adição for uma string, a outra também será convertida em uma corda e, em seguida, a splicing de string será executada!
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+underfined); console.dir (5+5); // 10 console.dir ("A soma de dois números é"+5+5); // a soma de dois números é 55 console.dir ("A soma de dois números é"+(5+5)); // soma de dois números é 10Vamos falar sobre o princípio implícito de conversão dos operadores de adição:
1. Uma é uma corda e a outra também será convertida em uma corda para splicing. Se um for uma string e o outro for nulo ou indefinido, adicionar, nulo ou indefinido, chamará o método String () para obter a string "NULL" ou "Undefined" e depois a ceder.
2. Se um número for adicionado com nulo ou indefinido, nulo ou indefinido será convertido em número () e depois adicionado.
3. Os princípios restantes são semelhantes aos outros, então não vou dizer muito.
Biequal Conversão implícita
Execute o código a seguir uma vez e acredito que você o entenderá naturalmente ~
var a; console.dir (0 == false); // trueconsole.dir (1 == true); // trueconsole.dir (2 == {valueof: function () {return 2}}}); // trueconsole.dir (a == nan); // falsolo.dir (nan= = nan); Falseconsole.dir (1 == indefinido); // Falseconsole.dir (2 == {tostring: function () {return 2}}); // truconsole.dir (undefined == null); // treconsole.dir (null == 1); tostring: function () {return 1}, valueof: function () {return []}} == 1); // trueconsole.dir (1 == "1"); // trueconsole.dir (1 === "1"); // false