Primero, ¡hagamos algunas preguntas primero! Para unificar, no mezclo estas preguntas. En las preguntas de la entrevista, a menudo mezclo estas preguntas, lo que lo confundirá más. Para que sea más conveniente para la demostración, he escrito algunas preguntas en módulos aquí, ¡para que pueda leerlo!
Conversión implícita de cadenas de operadores
multiplicación
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("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------división
console.dir ("----------------------"); console.dir (5/"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 ("------------------------"); console.dir ("-----------------------------");Tome el resto y encuentre el 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 ("-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------suma
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 ("La suma de dos números es"+5+5); console.dir ("La suma de dos números es"+(5+5)); console.dir ("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Sustracción
console.dir ("----------------------"); console.dir (16- "5"); console.dir (5- "a"); console.dir (5-nan); console.dir (5-nulo); console.dir (5-no definado); console.dir (5-5); console.dir (5-verdad); console.dir (5- "verdadero); console.dir (5-" "); console.dir (" La diferencia entre dos números es "+5-5); console.dir (" La diferencia entre dos números es "+(5-5)); console.dir (" ------------------ "); console.dir (" ----------------- "); console.dir("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Operadores relacionales
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> = indefinido); console.dir (5> = 5); console.dir (5> = true); console.dir (5> = "true"); console.dir (5> = ""); console.dir ("ladrillo"> "alfabeto"); console.dir ("ladrillo"> "alfabeto"); console.dir ("---------------------");multiplicación
console.dir (5*"5"); // 25 console.dir (5*"a"); // nan console.dir (5*nan); // nan console.dir (5*null); 0 console.dir (5*indefinido); // console.dir (5*5); // 25)
Hablemos sobre el principio de conversión implícita de multiplicación:
1. Si los dos valores son todos los números, realice operaciones de multiplicación directamente. (Creo que todos pueden hacerlo, al igual que las matemáticas de la escuela primaria, y deberías prestar atención a los símbolos de los números). Si el valor del producto excede el rango de representación numérica de ECMAScript, entonces return Infinity (positivo infinito) o infinidad (infinito negativo)
2. Si un número es nan, entonces el resultado es nan
3. Si el infinito se multiplica con 0, el resultado es nan
4. Si un operador es un número y el otro no es un valor numérico, primero use la función Número () para convertirlo y multiplique el valor convertido con el número. Si el resultado convertido aparece NAN, entonces el resultado es Nan.
división
console.dir (5/"5"); // 1 Convertir caracteres en números y divide console.dir (5/"a"); // nan console.dir (5/nan); // nan console.dir (5/null); // infinity null Conviertos con número () function, y el resultado es 0, entonces 5/0 es el console infinita.dir (nula/5); 0/5 es 0 console.dir (5/undefined); // nan Conviertos undefinidos con Number (), y el resultado es Nan Console.dir (5/5); // 1 Console.dir (5/0); // Infinity Console.dir (0/5); // 0 Console.dir (0/0); //an // 0 dividido por 0 es nan nan nan nan nan nan
Hablemos sobre el principio de conversión implícita de la división:
Similar a la multiplicación, el único más es que el resultado 0/0 es nan
Tome el resto y encuentre el modelo
Lo más común de usar en el proyecto es encontrar números impares y pares. A menudo usamos un número con 2 para calcular el saldo. Si el resultado es 0, entonces el número es un número uniforme, y si el resultado es 1, entonces el número es un número impar.
Mira el tema anterior:
console.dir (16%"5"); // 1 Convierta la cadena 5 a 5 a través del número () y luego calcule la consola restante.dir (5%"A"); // console nan.dir (5%nan); // console nan.dir (5%nulo); // nan convertir nulo a través del número (), el resultado es 0, y luego calcular el 5%0, el resultado es la consola nan.dir (%nulo 5); // 0 lo mismo que anterior al 0%5, el resultado es 0 console.dir (5%indefinido); // console nan.dir (5%5); // 0 console.dir (5%0); // console nan.dir (0%5); // 0 console.dir (0%0); // nanconsole.dir (infinity%infinity); // nanconsole.dir (5%infinity); // 5 console.dir (infinity%5); //Yaya
Hablemos sobre el principio de conversión implícita de residuos:
Como la multiplicación, ¡déjame hablar de algo especial! Todos conocemos los conceptos de dividendos y divisores, que aprendimos en la escuela primaria.
1. El dividendo es infinito y el dividendo es un valor finito, por lo que el resultado es nan
2. El divisor es un valor finito, y el divisor es 0, entonces el resultado es nan
3. Infinity%Infinity Result es Nan
4. El dividendo es un valor finito, el dividendo es un valor infinito y el resultado es un divisor.
5. El número dividido es 0, el resultado es 0
Sustracción
¡Echa un vistazo al ejemplo anterior!
console.dir (16- "5"); // 11 console.dir (5- "a"); // nan console.dir (5-nan); // nan console.dir (5-null); // 5 console.dir (5 -undefined); // console.dir (5-5); // 0 console.dir (5-true); // 4 console.dir (5- "verdadero"); // nan console.dir (5-""); // 5 Console.dir (5-Infinity); //-Infinity Console.dir (infinity-Infinity); // nan console.dir ("La diferencia entre dos números es"+5-5); // console.dir ("la diferencia entre dos números es"+(5-5); Los números son 0Hablemos sobre el principio de conversión implícita de sustracción:
Al igual que lo anterior, no hablaré de lo mismo, hablaré sobre la resta de la exclusiva.
1. El resultado de infinito-infinidad es nan
2. -NiFinity -Infinity Result es -infinity
3. El resultado de un número menos infinito es - Infinity
4. Infinito-(-Infinito) El resultado es el infinito
5. Si el operando es un objeto, se llama al método del valor del objeto. Si el resultado es NAN, el resultado es Nan. Si no hay valor de valor de valor, entonces llame al método toString () y convierta la cadena resultante en un valor numérico.
Operadores relacionales
Los operadores relacionales devuelven uniformemente verdadero o falso
console.dir (16> "5"); // verdadero console.dir ("16"> "5"); // false console.dir (5 <"a"); // false console.dir (5> = nan); // false console.dir (5 <nan); // false console.dir (nan> = nan); // console.dir (5> = null); // true console.dir (4 console.dir (5> = undefined); // false console.dir (5> = 5); // true console.dir (5> = true); // true console.dir (5> = undefined); // false console.dir (5> = 5); // true console.dir (5> = true); // verdadero.dir (5> = verdadero); console.dir (5> = ""); // true console.dir ("ladrillo"> "alfabet"); // falso el valor de codificación de cadena de b es 66, mientras que la codificación de cadena de a es 97. Por lo tanto, falso console.dir ("ladrillo"> "alfabet"); // La letra más baja B es más grande que A, por lo que es verdaderoHablemos sobre el principio de conversión implícita de los operadores relacionales:
Sigue siendo lo mismo que el anterior, no diré lo mismo.
Si los dos números comparados son cadenas, se compararán los valores codificados de cadena correspondientes a la cadena.
Operación de adición
La razón por la que finalmente dije que la conversión implícita de las operaciones de suma es que la conversión implícita de las operaciones de suma es diferente de las anteriores. Todos los símbolos anteriores del operador, siempre que uno sea un número, el otro también usa el número () para convertir los números de forma predeterminada. La operación de adición es diferente. ¡Mientras una de las operaciones de suma sea una cadena, la otra también se convertirá en una cadena y luego se realiza el empalme de cadena!
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+sinfinido); // console.dir (null+odofined); // nan console.dir (5+5); // 10 console.dir ("La suma de dos números es"+5+5); // La suma de dos números es 55 console.dir ("La suma de dos números es"+(5+5)); // dos números es 10 es 10Hablemos sobre el principio de conversión implícito de los operadores de suma:
1. Uno es una cadena, y la otra también se convertirá en una cadena para empalme. Si uno es una cadena y la otra está nula o indefinida, entonces agregar, nulo o indefinido llamará al método String () para obtener la cadena "nula" o "indefinida", y luego lo empalmará.
2. Si se agrega un número con nulo o indefinido, entonces nulo o indefinido se convierte en número () y luego se agrega.
3. Los principios restantes son similares a los demás, por lo que no diré mucho.
Conversión implícita de Biequal
Ejecute el siguiente código una vez, y creo que lo entenderá naturalmente ~
var a; console.dir (0 == false); // trueConsole.dir (1 == true); // trueConsole.dir (2 == {valueOf: function () {return 2}}); // trueConsole.dir (a == nan); // falseconsole.dir (nan == nan); // falseconsole undefinado); // FalSeconSole.Dir (1 == Undefined); // FalSeconSole.dir (2 == {ToString: function () {return 2}}); // trueConsole.dir (undefined == null); // trueConsole.dir (null == 1); // falseconsole.dir ({{{{{{{{{{{{{{{{{{{{{{{{{{{ toString: function () {return 1}, valueOf: function () {return []}} == 1); // trueConsole.dir (1 == "1"); // trueConsole.dir (1 === "1"); //